機械学習による異常検知① ー正規分布に従うデータからの異常検知

はじめに

2年ぐらい前に下記の本を利用して異常検知をちょこっとやっていたのだけれど、気が向いたのでここに纏めていこうとおもう。 僕は確率統計苦手マンで、説明下手くそマンなので、間違っているところや説明が雑な点があったら指摘してください。*1

使う本

井手剛の『入門 機械学習による異常検知 Rによる実践ガイド』を参考に用いる。 なお、個人的にプヨグヤミングの練習でもやろうかなとか思っているので、コードはC++で書く。*2

異常検知とは

何らかの分布に従って生成されているデータから得られた規範を元に、新たなデータがその規範に従っているかどうかを判定し、規範から外れているものを異常とする仕組み。 書籍の言葉を使うと、

正常となるモデルをデータから作り、そのモデルから外れるものを異常とすること。

です。 詳しい話は本の1章に任せます。

異常検知の手順

1. 分布推定
正常なデータからモデルとなる確率分布を作り、分布のパラメータ(平均や分散など)を推定する。
2. 異常度の定義
正常からのズレ具合を定義する。例えば負の対数尤度など。
3. 閾値の設定
ホテリング理論などに基づいて、異常度に対する閾値を設定する。
4. 異常検知
定義した異常度を計算し、閾値よりも高い値を異常と判定する。

1変数正規分布に基づく異常検知

データの分布を推定する

異常な値が含まれていないとされるデータ*3 D=\left\{x_1, x_2, ..., x_N\right\}
正規分布に従うとする。
 \displaystyle \mathcal {N}( x | \mu , \sigma^2) = {\frac{1}{(2\pi\sigma^2)^{1/2}}} exp \left\{ -{\frac{1}{2\sigma^2}}(x-\mu)^2 \right\} \tag{1}
この分布のパラメータ \mu,  \sigma最尤推定で求めると
 \displaystyle \hat{\mu} = \frac{1}{N}\sum_{n=1}^{N} x_n \tag{2}

 \displaystyle \hat{\sigma} = \frac{1}{N} \sum_{n=1}^{N}(x_n-\hat{\mu})^2 \tag{3}
となる。

異常度を定義

負の対数尤度を異常度 a(x)と定義する。
(1)式の対数尤度を計算すると、以下のようになる。
 \displaystyle \ln{\mathcal{N}}=\frac{1}{2\hat{\sigma}^2}(x-\hat{\mu})^2+\frac{1}{2}\ln{2\pi\hat{\sigma}^2} \tag{4}
ここで xを観測値 x=x'とすると、ある観測値に対する異常度を計算する事ができる。
(4)式で観測値 x'に依存する項のみを抜き出し、2を掛けると、異常度 a(x')
 \displaystyle a(x')=\frac{1}{\hat{\sigma}^2}(x'-\hat{\mu})^2=(\frac{x'-\hat{\mu}}{\hat{\sigma}})^2 \tag{5}
と定義できる。

閾値を設定

  • ホテリング理論

1次元の観測データ D=\left\{x_1, x_2, ..., x_N\right\} の各観測値が独立に同じ分布 \mathcal{N}(\mu, \sigma^2)に従い、新たな観測値 x'も同じ分布に独立に従うとする。このとき、式(5)の a(x')の定数倍は自由度 (1, N-1) F分布に従う。すなわち
 \displaystyle \frac{N-1}{N+1}a(x')~\mathcal{F}(1, N-1) \tag{6}
特に、 N \gg 1のときは、 a(x')そのものが自由度1、スケール因子1のカイ二乗分布に従う。
 \displaystyle a(x')~\chi^2(1,1) \tag{7}

よって、閾値カイ二乗分布を元に決めれば良い。
つまり、カイ二乗分布において、 a_{th} \le a(x)の面積が \alpha\%になるときの異常度を閾値をすれば良いということ。
具体的には、例えば「閾値 \alpha=15.7\%となるように選ぶ」とすると、下図の青い領域の面積が 0.157となるように異常度の限界値を決めるという事となり、その時の異常度の閾値 a_{th}=2.0となる。 f:id:i-hako:20180301014137p:plain
このことを数式に表すと以下の積分方程式を解いて閾値 a_{th}を求める事となる。*4
$$ \displaystyle \begin{align} \alpha &= \int_{a_{th}}^{\infty} \chi^2(u|1,1) du \\ &=1-\int_0^{a_{th}} \chi^2(u|1,1) du \tag{8} \end{align} $$

実際のコード

#include <iostream>
#include <boost/math/distributions/chi_squared.hpp>
using namespace std;
using namespace boost::math;

double Uniform(){
  return ((double)rand()+1.0)/((double)RAND_MAX+2.0);
}

vector<double> GenerateData(int data_size){
  vector<double> data;
  // srand((unsigned)time(NULL));
  srand(100);
  double mu=0.0, sig=10.0;
  for(int i = 0; i < data_size; i++){
    double z = sqrt(-2.0*log(Uniform()))*sin(2.0*M_PI*Uniform());
    double val = 170.0+mu+sig*z;
    data.push_back(val);
  }
  return data;
}

double ChisqrSetCriticalValue(double dof, double los){
  chi_squared dist(dof);
  double p_val = quantile(complement(dist, los));
  return p_val;
}

double CalculateAnomaly(double mu, double sig, double val){
  return pow((val-mu), 2)/sig;
}

int main(void){
  // 正規分布に従う適当な正常データを生成
  vector<double> normal_data = GenerateData(100);

  // 分布のパラメータを推定
  double mu = 0.0, sig = 0.0;
  for(int i = 0; i < normal_data.size(); i++)
    mu += normal_data[i]/normal_data.size();
  for(int i = 0; i < normal_data.size(); i++)
    sig += pow(normal_data[i]-mu,2)/normal_data.size();

  // 異常なデータを生成して元データにくっつける
  vector<double> abnormal_data = GenerateData(3);
  for(int i = 0; i < abnormal_data.size(); i++){
    double data_value = abnormal_data[i];
    normal_data.push_back(data_value + 50);
  }

  // 閾値を計算 (α=0.01)
  double a_th = ChisqrSetCriticalValue(1, 0.01);
  cout << "a_th: " << a_th << endl;

  // 異常度を計算
  vector<double> anomaly_data;
  for(int i = 0; i < normal_data.size(); i++){
    double data_val = normal_data[i];
    double anomaly = CalculateAnomaly(mu, sig, data_val);
    if(a_th <= anomaly){
      cout << "index: " << i << " is abnormal data" << endl;
      cout << "value: " << data_val << endl;
      cout << "anomaly score: " << anomaly << endl;
    }
  }

  // 描画はお好きなように…
  // (csvで吐き出してgnuplotでもいいし、matplotでもいいと思います)
  return 0;
}

閾値を求める際に、boost::mathquantile()を使いました。 簡単に棄却限界値を求められるので楽です。

実行結果

f:id:i-hako:20180301024757p:plain

a_th: 6.6349
index: 100 is abnormal data
value: 234.823
anomaly score: 38.1338
index: 101 is abnormal data
value: 221.681
anomaly score: 24.1974
index: 102 is abnormal data
value: 224.632
anomaly score: 27.052

適当にデータ生成してしまったので、怪しい結果のやつもいますが、最後に付け加えた3つの異常データがすべて閾値の点線よりも上に存在している事がわかります。

おわりに

すごくざっくり説明したので、これを読んで「???」となった人がいるかもしれません。*5
実際のホテリング理論は結構複雑な証明を2、3個挟む必要があるのですが、力尽きたので割愛しました。*6
また暇な時に書きたいと思います。
今度は多次元正規分布に基づく異常検知について書いていきたいと思います。

*1:可能な範囲で対応します

*2:雑魚ードなのはご容赦…

*3:異常値が含まれている場合は事前にデータクレンジングなどを行う必要がある

*4:実際には直接計算する必要は殆どなく、計算ライブラリなどに頼れば良い

*5:ごめんなさい…

*6:はてブロなんでこんなに数式書くの面倒なの…

『独創はひらめかないー「素人発想、玄人実行」の法則』を読んだ

どういう本か

工学博士の金出武雄先生による、様々な研究者などとの交流や過去の経験から得られた「思考法*1」やその精神について述べた本。
世間一般にある「ハウツー本」や「自己啓発本」とはまた違った感じの本。

なぜ読んだか

数年前に本書を購入して、積読してたのだけれど、ここしばらく研究が行き詰まり、いいアイディアも出てこないので、「何か書いてねぇかな」という気分で手に取った次第です。
「気が向いたから」と言えばそれまでである。

金出武雄先生について

Wikipediaでも見てください。
「ロボット研究している人で金出先生を知らない人はモグリ」なんて言われるぐらいすごい人(だそう)です。
(ちなみに、僕は学部生の頃に研究室のボスから教えてもらうまで知りませんでした…)
OpenCV触った事ある人ならば、cv::calcOpticalFlowPyrLK()という関数を見た事があるかもしれないけれど、この関数で使われているLucas-Kanade法の考案者。
An iterative image registration technique with an application to stereo vision

本書の構成

4章から成っており、章ごとに小テーマが存在する。

1章

ここでは、「素人発想、玄人実行」という考え方について著者が過去に行ってきた研究から、半ば帰納的に「こういう思考・精神でいるとよい」ということについて述べている。
比較的「ハウツー感」のある章。

2章

2章では、コンピュータと人間を比較しながら、「問題解決能力とは何か。どのように獲得されるのか。」について述べている。また、問題解決能力と結びつけて思考力や記憶力についても述べられている。
メタな感じの内容が書かれている。

3章

成果を発表しても伝わらないことには意味がない。
ここでは、「説明する・発表する」ということに焦点を絞り、どのような発表方法が良いのか、論文と口頭発表のスタンスの違いや、英語力などについて著者の考えが述べられている。
本書で一番「ハウツー感」が高い章かもしれない。

4章

「組織の意思決定の早さ比較」について日本とアメリカを対比して、その精神性について述べている章。
上記3章とは少し毛色が異なり、過去のプロジェクトや、CMUの風習などを用いて比較を行っている。
よくある「日本ダメ。アメリカ万歳!」的な中身のない文章とは異なる。

各章の感想

  • 1章
    解決したい問題について、いかに「うまく単純化」し「良いシナリオを考える」かという話は改めて言われて印象に残った。
    素人のように(素直に)考えて、玄人のように(精密に)実行する」という考え方は、非常に重要であると共感できた。 というのも、僕は変なところで心配性であり、"余計な事"を非常によく考えてしまう癖がある。研究では細かい点が理論的でない事が気になってしまい、多くの時間を取られて失敗に終わる事がある。 KISS -"Keep It Simple, Stupid."というアプローチを大切にしたい。
    また、物事がうまくいかないときに、いかに「とりあえず最後までやっちゃおう」という気分に切り替えられるかが、物事を進める上で重要なのだなという事がわかった。

  • 2章
    問題解決能力がどのように養われるかという点について、日本式教育しか受けていない僕からすると、教科書の構成の違いなどの話は驚きだった。
    また、思考力や判断力は問題解決によって鍛えられるが、記憶力も重要な要素であるという話は納得がいった。
    確かに、毎回イチから全検索するよりは、パターン類似度の高い情報を抽出する方が効率は良いよね。

  • 3章
    おそらく、本書を読んだ動機とは別で、一番読みたかった内容かもしれない。
    伝わる文章やスライドを作るのが非常に苦手な僕にとっては、かなりためになる章だった。 「起承転結」や「流れを意識する」なんてことはもちろんわかっている。わかっているのだが、実際にはうまく書けない。
    そういう点について、読者や聴衆の関心度の変化を意識することでどのように書くと良いかという話が出たのは良かった。
    一方で、口頭発表におけるスライド構成については、本章の内容を意識しながらも、発表環境に合わせて変えるべきだとも思った。*2
    あと、英語に対する認識や訓練方法が金出先生と同じだったのは、肯定された気分になって非常によろしかった。

  • 4章
    「意思決定は早いに越したことはない」「責任逃れるために主張を控えるよりも、主張してしくじったら責任取ればいい」という感じの内容。 正直あまり実感できなかったが、昨今の「ニッポンすげぇ」論に対する警鐘としても受け取れる。*3

全体を通した感想

久しぶりに「読み物」としての本を読んだのもあって、一気に読めました。 また、読む前に抱いてた「研究うまくいかね~~~~~」みたいな感情が、いい感じに消化*4できた気がします。 非常に面白く、読みやすい内容なので、何かに行き詰まってる人や効率的な思考プロセスを得たい人は読んでみると良いと思います。

*1:むしろ哲学と言って良いような…

*2:卒/修/博論審査会でTEDみたいな発表は誰も求めていないのである。

*3:というかそういう内容が書いてある

*4:「昇華」ではない

完全食COMPを買ってみた

久しぶりの更新です。
今回は技術とは全く関係ない話です。

COMP購入理由

僕は最近までのここ数年、自炊をせずすべての食事を近くの食堂かコンビニで済ませていました。
調理が嫌いというわけではなく、どちらかと言えば食後の後片付けが嫌いだった事が原因です。

たまに自炊をするとなると、調理量のコントロールが下手くそなので大量に作ってしまいます。
作ってしまうと今度は食べ残しがもったいなくなるので、作った分をすべて食べる。
そうこうしていると、摂食量管理の感覚がバカになり大食いするようになる。
大食いに伴い、食後の後片付けが増え更にめんどくさくなる。
めんどくさいのでまた外食に頼るようになる(以下無限ループ)

という悪循環の結果、体重は数年で激増し月の食費はかさむという二重苦を背負う羽目になっていたのです。

そんな事で悩んでいたある時、クラウドファンディング*1でSoylentという製品のキャンペーンを見つけました。
このSoylentは、粉末を液体で溶き、飲むだけで食事が終わるという完全栄養食となっていました。
画期的な製品です。

素晴らしい。
1食の量が決まっておりドカ食いをする恐れもない。
後片付けも1つか2つの容器を洗うだけで良い。
なにより食事に時間をかけなくて済む。
僕にとっては、摂食量管理・後片付け軽減・食事時間管理を同時に行えるという点で救いとも言えるものでした。

しかしながら、Soylentは日本で購入できないという問題があり、結局上記の悪循環から抜け出せずにズルズルと数年すごしていました。


そんななか、1~2年ほど前から日本版Soylentとも言えるCOMPが発売され始めたという事を知り、これは良いチャンスだと思いトライアルパックを購入してみました。
昨日届いたので今回はCOMPのレビューをしてみたいと思います。

COMPとは

粉末状の完全食です。
サプリメントとは違い、これだけで1食分の栄養とカロリーを摂取する事が可能になるものです。

詳しくは下記公式HPにて
www.comp.jp

COMPの飲み方

指定量のCOMP粉末を水などの液体に溶かし、飲むだけです。


お手軽。


ポイントは、「水など」という所でしょうか。
水以外のジュースやコーヒーなどでも良いとの事です。
個人的な味のレビューは下記しますが、結論から言うと水溶きは個人的に合いませんでした。

トライアルパック

こんなかんじ。
f:id:i-hako:20170226045135j:plain

400kcal/Packが3パックセットになっているものです。
値段は300円。
安い。

粉末を液体で溶く際に振り溶かす必要があったので、専用シェーカーとスコップも併せて購入しました。*2

味について

水溶き

試しに100kcal分(23g)を水50mlで溶いてみました。
見た目は水溶き小麦粉のような感じ。
色は淡いクリーム色。

味は、見た目通り。
小麦粉にほんのり砂糖を混ぜて水で薄めたような味でした。
舌触りは少し粉っぽい感じ。

あまり僕の舌に合う味ではなかったです。

カルピス溶き

約300kcal分(70g)を冷蔵庫にあった味わいカルピス(http://www.elbee.jp/ajiwai/)で溶いてみました。
見た目は水溶きとあまり変わらない。

味はカルピス特有の甘さが抑えられた感じで、酸味が独立しているような感じ。
水溶きよりも比較的飲みやすくなりました。

とは言え、あまり大量に飲めるものではない...

コーヒー溶き

慣れてきたので400kcal分(93g)を雪印コーヒー(http://www.meg-snow.com/products/milk/807ef.html)で溶いてみました。
見た目はコーヒーの色が少し白くなった感じ。

味はコーヒーときなこ豆乳飲料(http://www.pokkasapporo-fb.jp/products/soymilk/soyafarm/HK62.html)を併せたような味。
今まででは一番飲みやすい味になりました。

この味なら毎食これでも大丈夫かなという感じ。

摂取後の効果

さすが完全食というだけあって空腹感は一切ありません。
満腹感があるかと言われると、そうでもないという感じです。
おそらく、いままで食事をする際に咀嚼をし腹を食べ物で満たして満腹感を得ていたのが、飲料のみで胃が満たされたため、脳がついていってないんだと思います。

腹持ちは非常に良い気がします。

まとめ

食習慣にまつわる理由からCOMPを買ったのですが、粉末を溶く液体を美味いこと選定すれば飲み続けられるし、食事の質もとても良いと感じています。
溶媒を色々選ぶのが楽しみになりそうです。
面白い組み合わせを見つけたら更新していきたいと思います。
(定期購入しようかな…)

*1:確かkickstarterだったと思う

*2:シェーカーを持っている人は購入する必要ないと思います

Avegant Glyphが来た

4/23にAvegant Glyphという物が届いた。
「Avegant Glyphってなんぞ…?」という方は下記の公式ページをみていただくと良いかもしれない。
www.avegant.com
要するに、ヘッドホン一体型のHMDのことです。
以前kickstarterでbackしてから待つこと約2年、ようやく手元に届きました。
ありがとうAvegant。
せっかく届いたので簡単に粗雑なレビューをしようとおもう。

Glyphについて

HMDって言うと、最近だいぶ話題になってきたOculus Riftだったり、HTC Viveだったり、PSVRだったりを想像する方がいるかもしれないが、アレとは完全に別物だ。*1
OculusなどのHMDは一般的にVRHMDなどと呼ばれていて、主にVirtual Realityで用いられる物で、今回のGlyphとは全然違う。
Glyphは系統的には、VuzixのiwearシリーズやSONYのHMZシリーズなどの過去主流だったHMDと同一の系統である。
つまりVRHMDにある没入感は無い

Glyphの利点

では一体何が良いのかという事について。
今まで出てきた過去のHMD

・配線がアホみたいに多い
・やたら重心が前に有るのでずり落ちる
・鼻の位置が合わなくて装着感最悪
・オーディオ一体型が少ない(あるには有ったがチープなイヤホン程度)
・そもそも、画質が悪すぎて映像なんて見れたもんじゃない(PCミラーリングしたら文字見えない)

などの問題点が有った。
僕も過去に幾つかHMDを試してみたが、Oculus Rift DK1/DK2を除くほとんど全てのHMDに共通の事が言えた。*2

一方で今回のGlyphはそのほとんどをいい感じに解決した製品で

・配線が少ない(映像見るだけならHDMIケーブルだけで良い)
・ヘッドホン部分で固定されるのでなかなかずり落ちない
・ノーズピースが複数付け替えられるので自分に合わせられる
・一体型のプレミアムオーディオヘッドホンがついてる(通常はヘッドホンとして使える)
・片目1280x720pのなかなかの高解像度
・(一応)網膜投影式なのでスクリーンドア効果が無い

などと言った感じになっている。あと、割りとデザインもいい感じなので製品としての完成度はなかなか高い。
特に、撮像方式がマイクロミラーアレイを使った網膜投影方式なので、画が非常に鮮明に見える。(サイコー!)
新しいものが好きなので、当初は単純に網膜投影方式に惹かれてbackしたが、届いてみると割りと色んな所がいい感じで良かったと思っている。
以下レビューしてみる。

開封の儀

まず外箱
f:id:i-hako:20160425024517j:plain
きれい。

開けてみると
f:id:i-hako:20160425024524j:plain
さらに中は二段構成になっており、上段にケーブルなど周辺部品、下段に本体という感じ*3
f:id:i-hako:20160425024529j:plain

これがGlyphだ!

Glyphの内容物
f:id:i-hako:20160425024535j:plain
内容物は
・Glyph本体
・ヘッドストラップ
・ノーズピース
HDMIケーブル(Avegant刻印入り)
・USBケーブル
・収納バッグ
・取説
・謎のカード×3枚

Glyph本体はこんな感じ
f:id:i-hako:20160425030458j:plain
割りとでかい。ちなみにヘッドバンド部分に投光部が来る。
f:id:i-hako:20160425024649j:plain

HMDモードの場合は、ヘッドストラップをつけることで頭にしっかり固定できるし、ノーズピースを付け替えれば自分の鼻の形に合った固定ができる。
f:id:i-hako:20160425030436j:plain
f:id:i-hako:20160425024627j:plain
f:id:i-hako:20160425024638j:plain

HMDモードで使う場合に用いるHDMIケーブルは付属品があって、Avegantオリジナルのもの。
ちゃんと刻印も入ってていい感じ。
f:id:i-hako:20160425024553j:plain

Glyphは専用の収納バッグもついている。これが割りと便利。ちゃんとケーブルを入れるポケットがある。
f:id:i-hako:20160425024632j:plain
f:id:i-hako:20160425031820j:plain
ただ、箱から取り出したときは袋がものすごくイカ臭かった…

あと、取説とともに謎のカードが3枚入ってた。Avegant社とカードバトルする時に使えばいいのかな…
f:id:i-hako:20160425024610j:plain
f:id:i-hako:20160425024619j:plain

オーディオモード

まずオーディオモードについて。
Glyphは通常オーディオモードというモードでヘッドホンとして扱える。かなりゴツいヘッドホンとして…

装着してみた感じ。
f:id:i-hako:20160425025123j:plain
でかい…

音質について

音質については、おそらく賛否両論あると思うけど僕の感想は中低音域が弱いなぁという感想。
僕は普段SENNHEISERのIE80というイヤホンを使っているのだけれど、それと比較するとやはり高音域が強くて、中低音域が弱いという感じだった。
音質は人の好みがあるので、まずはお試しあれという感じ。

装着に関して

まずオーディオモードで使うためには3.5mmオーディオケーブルが必要。
現状Bluetoothはヘッドトラッキングにしか使えないようなので、BTヘッドホンとしては使えない。
ただ、オーディオケーブルに関しては1点注意が必要。
Glyphのオーディオジャックの外壁が割りと狭い…(8mmぐらい今見たらノギスの値7mmだ…)
f:id:i-hako:20160425035621j:plain
通常オーディオに用いいるAUXケーブルだと、モールド部分(持ち手部分)が10mmぐらいあって確実に入らないので、細身のケーブルが必要。
個人的には下記のケーブルを使ったら割りときれいにはまった感じ。
www.amazon.co.jp
f:id:i-hako:20160425035633j:plain
外形6.75mmほどなので、しっかり収まる。

装着感について。
頭頂部にレンズ部があるので、これが頭に結構当たる。痛み的なものはあまり感じないので、個人的にはそれは気にならないのだけれど、
どちらかと言うと頭でレンズ部分を押しちゃっててぶっ壊れないかどうかがすごく不安になる…。
あと、側面のスピーカー部の締付けが割りとあるので、長時間の着用(2時間over)はなかなか疲れる。

この辺全部クリアできれば割りとヘッドホンとしても最高っぽい。

HMDモード

実は、スマホからの画面出力について書きたかったんだけど、僕のスマホが故障したのか、MHLケーブル繋いでもうんともすんとも言わないので、書けない…
代わりに、Raspberry pi 1でやった事について文字で書く。*4
オーディオモードからHMDモードに切り替えるにはレンズ部のレンズカバーを外して、レンズを飛び出させる必要がある。
これは両レンズの真ん中にある丸いボタンを押すと簡単にリリースされる。(とりあえず動画にしてみました。)
vine.co
これをやって、Avegantが指定したキャリブレーションを行ってからいざ映像ソースに接続するとちゃんと見れました。
映像はやはりかなり鮮明。
raspberry piは起動時にターミナルにやたら細かい文字が出てくるけれどそれもしっかり読める。色にじみもない。
冒頭で言ったスクリーンドア効果が無いからかもしれない。とてもきれい。
次回は(というか、スマホの問題が解決したら)スマホAmazonビデオ視聴とかしてみたい。

まとめ

Avegant Glyph、使えます。
ようやく普段使い用の映像視聴用HMDとして標準的なデバイスが出たという感じでした。
今後は、ソフトウェアアップデートとかでBTオーディオが使えるようになったりしたらいいなぁと思う。
(あと、できれば早くヘッドトラッキングとかその辺の開発API公開してほしい…)
多分、Glyph自体これで完成ではないとおもうし、網膜投影だって本物のレーザー走査型ではないので色々改善点が出てくると思うので、今後のAvegant製品に是非着目したい。
次はVRHMDにも使える様なこういうHMD出して欲しいなぁ…

最後にどうしてもこれだけ…

やっぱりこの格好は人前でやるのはちょっとアレな感じある。
f:id:i-hako:20160425025128j:plain

だってこれ、絶対コレ
http://vignette2.wikia.nocookie.net/xmenmovies/images/d/d3/Cyclops_04.jpg/revision/latest?cb=20140330215941
(source: Cyclops - X-Men Movies Wiki - Wikia

か、もしくはコレ

http://www.startrek.com/uploads/assets/db_articles/20a3668f5e41172f613551aa4e8d0fe5911925d8.jpg
(source: Star Trek La Forge, Geordi )

だもんなぁ…
((サイクロップス先輩では)ないです。)



以下WIREDの""ディス""レビュー
www.wired.com


追記(2016/4/26)

関税について書いてなかった。
通常海外発送のものだと、関税でいくらかお金がかかるので、受け取る時に配達業者に支払うんだけれど*5、Avegant Glyphはなぜか関税がかからなかったです。
発送予定日からだいぶ遅れて発送したことに対するサービスなのかな…?

*1:もっと言えば、HMDは Head Mounted Displayのことであって、頭にかぶせて使うディスプレイであればなんだってHMDなのだ。

*2:HTC ViveとPSVR、Rift(製品版Oculus)は試したことが無いのでこの比較には含まない。

*3:写真ぶれてて非常に申し訳ない…

*4:写真が無い…

*5:Oculus Rift DK1のときは900円ぐらいだったはず

博士課程合格しました

本日発表があって無事(?)合格しました。
修士1年生の時に色々あって心をボキボキに折られて相当へこんでいたのですが、"なんとかここまで来ました。"
以前とあるイベントに参加した時にいろんな方とお話したのですが、「ドクターは頑張って進学するものではなくて気づいたらドクターだったという人が多いと思うよ」という話を伺いました。
その観点で見ると「なんとかここまで来た」というこの言葉から、僕がいかに低レベルでギリギリ滑り込んだかがわかるかなと思います。
(心が折れたためにギリギリだったわけではなく、純粋に博士課程で生き残れるかどうかかなり怪しい技術力/知識力なのでギリギリなのです。)
僕が知ってる/会ったことがある/教えてもらったことがあるドクターの先輩方は相当腕のたつ人ばかりだったので、彼らを追い越すためにも着実に色々熟していきたいと思います。


博士課程、一応目標を立てておくと

  • 人前に出せる"モノ"を作る
  • 現在関わっているプロジェクトで使いやすいライブラリと有用なデータセットを作る(できればオープンにしたいけどそのへんは政治事情に任せる)
  • あと1本特許申請
  • 3年で修了する

という具合にしておく。

「人前に出せる"モノ"を作る」と言うのは、完成度を重視した話。
「あと1本特許申請」については、学部4年のときの研究ですでに1つ申請したものがあるが、修士課程では結局1本も出せなかった(あまり研究内容を発展させられなかった)。悔しいので今度こそという気持ち。
「3年で修了する」というのは、博士課程はなかなか難しいとの事なのだけれど、経済状況的にも長引くのはよろしくないのでぜひとも叶えたい所。
若干2016年の目標とかぶってる気もするし、弱気な感じもあるけど一歩一歩地に足をつけて行きたいです。

何にせよ、楽しんで研究したい。

あけましておめでとうございます

新年明けましておめでとうございます。
去年の今日のエントリを見てみると
inside-my-box.hatenablog.com
という感じで、なんだかすごく適当に書いてる感じありますね。
「一年の計は元旦にあり」なんて言葉もあるぐらいですから、もう少しまともな文章書くべきだったのではないかという気がします。
かと言って、じゃあ今年は何か書くものがあるのかというとぶっちゃけ何も無い。(まるで成長してない…)
ほら、だって「来年の事を言えば鬼が笑う」なんて諺もあるぐらいだし。*1

まぁでも目標ぐらいはしっかり定めた方がいいかななんて思うしもう少しまじめに書いてみます。
とりあえず今年は以下の事ができるとすごく嬉しいなという感じ

  • ちゃんと研究
  • 基礎知識の地固め
  • とりあえず人前に出しても恥ずかしくないようなアプリケーションを少なくとも1本
  • 真面目に生きる*2

特に最後の「真面目に生きる」はかなりちゃんと実行したいですね。
というわけで今年もよろしくお願いします。

*1:英語では”Fools set far trysts”(愚か者は遠い先の会合の約束をする)と言うらしいです

*2:やばい