統計におけるp値とt値 ~聞くは一時の恥、聞かぬは一生の恥~


■p値

回帰分析で求めた変数xの係数kに対し、『変数xは有効ではない』という帰無仮説を考えたとして、『偶然に係数がk以上になる確率』を表す

p値の解釈についてはコチラの表現がわかりやすい

 

カンタンに言うと「その仮説が正しいと仮定したら、今回みたいな結果が起きる確率はこんなにも低いんだ。偶然こんなに低い確率を引いたと考えるより、その仮説は正しくないと考える方が自然じゃない?」と主張するときの『こんなに低い確率』 https://atarimae.biz/archives/12011#p

 

仮説を否定するときの基準は『p値0.05以下』が広く用いられている

まわりくどいように感じるが、まとめると以下の流れ。
・変数xは有効ではないという仮説を立てる
・偶然では考えにくいような結果が出た
・きっと仮説は誤っていた、つまり変数xは有効だ!

 


■t値

・2つの集団に対して平均値に有意差がありかどうか判定する基準値

 

例えばトレーニング前の体力測定データの集合Xと、トレーニング後の体力測定データデータの集合Yを用意して、t値を算出することでトレーニングによる有意差があるかどうか検定ができる。

 

 

<数式の直感的な解釈>

分子:2つの集団間で平均値の差が大きいほどt値(有意差)が大きくなる

分母:それぞれ集団の分散が大きいほど、たまたま2集団間の平均値が離れただけの可能性があるのでt値(有意差)が小さくなる

分母:サンプルサイズ(mとn)が大きいほど、XとYの平均値が母集団を正確に表現できているのでt値が大きくなる

全員リーダーの組織論

大学選手権9連覇中の帝京大学の岩出監督の言葉

・過剰なトレーニングを強いるのは指導者の不安解消でしかない

・楽しくさせてやったら人間だれでも動く

 

BS1スペシャル
「“全員リーダー”の組織論~帝京大ラグビー9連覇~」
ラグビー大学選手権で前人未到の9連覇を果たした帝京。脱体育会系を掲げ選手一人一人に考える力を求めた岩出監督と選手15人のインタビューで負けない組織の核心に迫る。 

http://www4.nhk.or.jp/bs1sp/x/2018-01-28/11/15594/3115361/

 

コントロールするのではなく、自発的に動く環境を作る。やはりこれに尽きるようですね。

AIとは?? ~正しい理解のために過去のブームを振り返りながら解説~

「AIってなんかすごいんでしょ!」

「AIを使って何か提案してよ!」

そんな声を聴くたびに嘆かわしく思っていた私ですが、そもそも何故近年AIブームが過熱しているのか?今までと何が変わったのか?正しい理解をしている人が何人いるでしょうか?

という気持ちから、簡単にまとめてみました。

 

さぁ、勉強したところでAIビジネスを始めましょう。

 

NVIDIAが教師無しのImage Translationを提案 ~Unsupervised Image-to-Image Translation Networks~

Unsupervised Image-to-Image Translation Networks
Ming-Yu Liu, Thomas Breuel, Jan Kautz(NVIDIA)

PDF NVIDIAサイトでの紹介 Git


概要

image-to-image translationによりドメイン間の転送を学習する。ここでいうドメインとは写真だと晴、雨、夏、冬など、顔画像だと眼鏡、金髪、笑顔、など

次の図では晴れの画像(左下)から雨の画像(右下)を生成している


特徴、すごい点

Unsupervised で image-to-image translation を実現

従来のSupervised image-to-imageでは
・画像ペア(X1, X2)が得られた
・そこから同時分布(Joint distribution)を推定可能だった
・つまりペア画像の差分がイコールでドメインの異なりによる成分だった

今回のUnsupervised image-to-imageでは
・画像ペア(X1, X2)が得られない
・そのため周辺分布(marginal distribution)しかわからない
・画像間の差分には被写体の異なりによる成分と、ドメインの異なりによる成分が含まれる


アイデア

共通の潜在空間 Z が存在すると仮定(Shared-latent space assumption)。異なるドメイン間の対応する画像は、同じ潜在変数Zから生成されるとした。

潜在空間Zの仮定により、ネットワーク各部の役割を以下のように解釈できる

E1 – G1, E2 – G2    : Variational auto encoder

E1 – G1 – D1, E2 – G2 – D2 : GAN

E1 – G2, E2 – G1     :  ドメイン間の画像変換


工夫①~重み共有~

ドメイン変換したときに、対応したペア画像が生成できるよう重み共有を部分的に行う。(E1とE2、G1とG2における一部のLayerが対象)。

重みを共有した部分が物体の構造を理解・再現する(hに相当)

重み共有されていない部分がドメイン固有の特徴を再現する(Lに相当)

 


工夫②~Loss関数の設計~

潜在空間Zの過程からcycle-consistency-assumptionという仮定を導く。

仮定:
「x1」「x1から変換したx2」それぞれから算出される潜在空間zの分布は一致する(Loss関数における項Lcc1)

仮定:
「x2」「x2から変換したx1」それぞれから算出される潜在空間zの分布は一致する(Loss関数における 項Lcc2)

2つに分けることで「ドメイン1⇒2への変換だけ得意」などと能力が偏らないようになる。(※なお、VAEとGANは従来のようにLoss関数を設計して学習)


所感

Loss関数の設計工夫はシビレましたね。ちゃんと潜在空間Zがそれっぽくなるような制約を加えることで結果が出ています。また、重み共有でドメイン間の事なりによる差分成分を分離できた点も、予想以上に直感通りの挙動を示したという驚きです。

多次元演奏会 ~音楽×映像×書道~

先日参加してきました多次元演奏会。今回のコンセプトは「音楽×映像×書道の多次元演奏会」とのことです。

書家の福田匠吾さんによるオープニングアクトは会場を一瞬で圧倒し、観客が一歩も動けず物音ひとつ立てられないほどのパフォーマンス。ライブ書道の緊張感を味わいました。

http://f-shogo.jp/

「音楽は感覚の数学」とはよくいったもので、メインアクトの融解建築は緻密に練られた美しい音楽でした。百聞は一見に如かず、とにかく聴いてみてください。

 

お土産にとCDを買って帰路につきました。ありがとうございました。

どシンプルながらも強力なPruningによるネットワーク高速化 ~Pruning Filters for Efficient ConvNets~

本日はPruningによるネットワーク高速化の論文を取り上げます。背景としてはディープニューラルネットワークではConv層の計算量やパラメータ数が膨大で、処理時間増大やメモリ圧迫が生じるのでなんとかしたいというところから来ていますね。

特に、ディープラーニングを組み込みで動かす場合はこのあたりの話はかなりシビアに効いてきます。


Pruning Filters for Efficient ConvNets (2017)(PDF
Hao Li, Asim Kadav, Igor Durdanovic, Hanan Samet, Hans Peter Graf

・Pruningによる高速化手法。
・Conv層をカーネルごと削減する手法を提案。


・L1ノルムが最小のカーネルを有効性が低いと仮定して削除する。
・既存のBLAS等のライブラリで実現可能。

 

・ResNetなど複雑な構造のネットワークでもConv層のPruningは可能
・関連するLayerもあわせて次元削減して次元数を揃える点に要注意
・Residualを出力するConv層を基準に削除次元を選定すると良いとのこと

 

・ランダムにカーネル選定するよりはL1を用いた方がわずかに良かった

 

・Layer別にPruning時の性能低下率と速度向上率を検証。
・性能低下を招きやすいLayerや、速度向上しやすいLayerがあることを示した。


所感

カーネル選定手法はまだまだ議論の余地はありそうですが、ポピュラーな構造のネットワークについて丁寧に検証されている論文でした。

lddでは”not found”にならないのにmakeすると”No such file or directory”になる(LINUX)

特に買ったばかりのRaspberyyPiなどでよくある話

makeしてプログラム実行しようとすると

“error while loading shared libraries: ****.so.0: cannot open shared object file: No such file or directory”

となってしまう。ライブラリがリンクされていないのかと思ってlddで確認すると”not found”とならない。

 

リンクが出来ているのか出来てないのかどっちやねん!

これは”/etc/ld.so.cache”がアップデートされていないことが原因らしい。次のコマンドでアップデートとしてやると良い。

これで解決

ニューロンの重要度を逆伝搬的に算出してPruning ~NISP: Pruning Networks using Neuron Importance Score Propagation~

NISP: Pruning Networks using Neuron Importance Score Propagation
University of Maryland & IBM T. J. Watson Research
https://arxiv.org/abs/1711.05908

2017年11月に発表された論文。タイトルから察するにNIPSでNISPという技術を発表してウケを狙ったのかな・・・?(未確認)


概要

ディープニューラルネットワークの高速化技術に該当。

特にCNNではパラメータが膨大すぎて計算時間がかかることが課題視されており様々な研究がなされている。

主な手法は不要なニューロンを削って高速化するPruningと、量子化対応(例えば16bitのところを近似して8bitにする)による計算高速化。

こちらの論文はPruningによって高速化を図っており、いかに不要なニューロンを削って、重要なニューロンを残すのか、その選定手法を提案している。


手法

ディープニューラルネットワークの最後のLayer(識別結果出力の直前)にて各ニューロンの重要度を算出。

 

重要度算出には、このLayerにおける各ニューロンは入力Xを抽象化して得られた特徴量であると解釈して、下記の特徴量選定手法(ICV2015)を適用。

https://www.cv-foundation.org/openaccess/content_iccv_2015/html/Roffo_Infinite_Feature_Selection_ICCV_2015_paper.html

 

それ以外の手前のLayerでは下記手順で重要度を算出

①そのニューロンをPruningした場合としなかった場合との差分を算出

②各ニューロンでの差分*各ニューロンでの重要度の和によって「Pruningによる影響」を算出

③「Pruningによる影響」が最も小さいニューロンをPruningに選定する

※直感的には、このニューロンを削ったとしても重要度の高いニューロンに影響がないようなものをのPruning対象に選択する


所感

比較対象がRandomにPruning対象を選んだ場合や、Pruningのたびにゼロから学習しなおした場合(scratch)なので、もっとそれらしい手法と比較をしてほしかった。

 

しかし、なんとなくではなく理論立てて納得感のあるPruning候補選定をした点は希少と感じており、今後このような研究が増えてほしい。

レベルを上げて物理で殴る!?最新モデルよりもチューニングをちゃんとしたLSTMが最教説~On the State of the Art of Evaluation in Neural Language Models~

DeepMind社から面白い論文が発表されています。その名も「On the State of the Art of Evaluation in Neural Language Models」で、内容としてはチューニングをきちんとしたLSTMは、近年のstate-of-the-artを上回るというもの。

論文サイト:https://arxiv.org/abs/1707.05589

(アブスト。LSTMが最もよいと書かれています。)

様々な学会であれこれと創意工夫がこなされている中、まさかレベルを上げて物理で殴れば最強と言わんばかりの論文が登場するとは思いませんでした。

比較相手にされているのはRecurrent Highway Network(2016)とNAS(2016)のようです。

ちなみに「ちゃんと」チューニングとのことですが、具体的にはGoogle Vizierを用いたようです。こちらはGoogle社によるブラックボックス最適化のためのサービスです。っていわれてもなんのこっちゃですがハイパーパラメータなどをイイ感じに最適化するツールとでも解釈してください。

Google Vizier
https://research.google.com/pubs/pub46180.html
http://itpro.nikkeibp.co.jp/atcl/idg/17/100200076/100200002/?P=2

しかし、チューニングにGoogle Vizierを使ったとなると、Google Vizierの信頼性も気になるところですよね。一般的なモデルになりつつLSTMだからこそGoogle Vizierによるパラメタチューニングが上手くっただけで、state-of-the-artの手法にGoogle Vizierが対応できなくて性能が出なかったという可能性もありません。

まぁそれを差し置いてもLSTMで最高性能を達成したというだけでGoogle Vizierの価値が高いのは間違いないのですが。

個人的にはDeepMind社によるGoogle Vizierの宣伝じゃないかと懐疑的にもなりつつ、このようなシンプルに強力な結果を出す研究は大好きなので楽しく読ませて頂きました。

JDLA ディープラーニングG検定 内容・難易度・試験対策まとめ

2017年12月16日、JDLAディープラーニングG検定を受講しました。

受験を検討している方のために内容をまとめておきます。





問題数と試験時間

問題数:233問
試験時間:120分

試験時間に対して問題数が膨大ですが、「画像認識タスクには特定物体を矩形領域で抽出する(ア)や、ピクセル領域ごとに認識する(イ)がある。」といった具合に、1つの文章に対して穴埋め問題が複数設定されていたりするので、試験を受けた感じでは問題数が多すぎるといった感覚はなく、実質120問程度といった感覚でした。

 


出題範囲と難易度

ディープラーニングに関する出題は簡単なものばかりでした。
学習率の大小によって学習の進み方がどう変わるか、ドロップアウトは何の役に立つか、正規化や正則化はどんな処理をしてどんな効果が出るか、CNN・RNNの特徴は何か、、、、せいぜいそんなところです。ディープラーニング関連の設問が最も簡単で点の稼ぎ所だったのではないでしょうか。

重回帰分析、主成分分析、SVMについて問う出題もありました。
特にSVMはカーネルトリックなどがどんな手法でどんな効果を生むのか、マージン最大化手法ですという以上に正確な知識を問われました。このあたりは推薦図書を読んだだけでは解けない問題だったので、多くの受験生が苦戦したのではないでしょうか。

人工知能の開発の歴史を問う問題も多かったです。
第1次AIブームから現代にいたるまで、どんな技術でどんな課題が解決されブームが加速し、どんな課題に直面してブームが終焉したのか。シンボルグラウンディング問題やフレーム問題、抽象化の難しさやエキスパートシステムの問題点などを問う設問が多かったです。AlexNet、GoogleNet、VGG、ResNetなどディープラーニングの進化をたどる設問もありました。これらは推薦図書にあるAI白書や松尾先生の本を読めば対応できます。

人工知能開発の世間動向を問う設問もありました。
ここが最も厄介で、シンギュラリティに対してイーロン・マスクがとっている姿勢として最も適切なものを選べとか、「そんなの知らんわ」という設問が多かったです。自動運転の開発状況や各レベルの意味、さらには法規制の整備状況も問われました。人工知能をビジネスに活用しようとする人向けの試験であるということを強く感じさせる設問です。AI白書をよく読めば書いているのですが、カンペなしにはきつい設問が続きます。ここでうっかりググって時間を使ってしまって最後までたどり着けなかった受験生も多かったのではないでしょうか?


まとめ

ディープラーニング検定というよりも人工知能検定でした。試験名は改めた方がいいでしょう。

網羅性が高く、「バズワードに踊らされることなく、こういうことをきちんと理解してほしい」という協会からの強い意志を感じる試験でした。

ディープラーニング関連は岡谷先生の本を1度読めば十分です。それ以外の設問は推薦図書を1通り読んだだけでは対応できないでしょう。2~3回繰り返して読んで歴史や経緯を辿った知識定着をさせないと合格困難な試験と思われます。