PRMU企画セッション2018の資料が深層学習入門編としてとてもわかりやすい

電子情報通信学会の総合大会@東京電機大学に参加してきました。

同時開催されたPRMU企画セッション『人工知能・深層学習の実世界応用』にてご講演されたシモラセ・エドガーさん@早稲田大学の資料が非常にわかりやすかったので備忘録としてまとめます。

まとめますというか、一般公開されているのでリンク先を見てもらえればいいのですが。

シモセラ・エドガーさんによるpdf資料

企画セッションのサイト

 


セッション中に”イイネ!!” と思った発言集

・ディープラーニングは万能ではない、問題を選ぶ必要あり

・パラメータは学習で決まるもの、ハイパーパラメータは人間が経験で決めるもの

・深層学習による自動的な特徴量抽出によってヒューリスティックを避けられる

・非線形の活性化関数をはさむことであらゆる計算式が近似できる(↓↓ 例えばこれ Wikipediaより)

・Adadeltaとバッチ正規化はとてもオススメ

・モデルや学習では解像度を下げることが重要

・TensorFlowは静的と動的なグラフが可能で、生産に焦点をあててる (←そうなの!?と驚いたけど、いつの間にか動的ネットワーク生成に対応したTensorFlowFoldってのが登場してたようです)

 


資料中で引用されていたAlec Radfordさんによる学習率の違いを示したアニメーションが面白かったです

 

PAC学習とVC理論

お久しぶりです、ロードローラーです。最近は7月のICMLに参加すべく勉強の日々を過ごしています。

ディープラーニングをあれこれとやって知ったつもりになっていましたが、ディープラーニングは機械学習の一部でしかなく(さらに言うならニューラルネットワーク手法の1つでしかない)、まだまだ勉強することは山のようにあります。

そんな中で、本日は機会学習のPAC学習とVC理論を調べました


PAC学習

参考サイト:朱鷺の杜Wiki

パラメータ:入力の誤差 ϵ,信頼度 δ,学習する概念の複雑さの上限 s

学習する概念についてのエラーがたかだか ϵ である確率が 1δ より大きくなるような仮説を出力できるアルゴリズムが存在するとき PAC学習可能 (probably approximately correct learnable). こうした学習問題を扱うのがPAC学習 (probably approximately correct learning)

さらに,1/ϵ1/δs について,計算時間が多項式時間で抑えられるとき,多項式時間PAC学習可能であるという.


こちらでもわかりやすくまとめられています

 

~要約~

PAC学習のモチベーションは『 まぁまぁ良い学習をするためにどの程度学習データが必要か見定めたい 』こと。

仮説集合𝐻(≒分類モデル)において『汎化誤差が𝜖より大きい,かつ,ℓ個の訓練データ に無矛盾な仮説を選択してしまう確率を𝛿以下に抑 えたい』とき、すなわち危険率𝛿以下で汎化誤差が 高々𝜖の仮説を学習するために必要な訓練デー タは次の式で求められる

問題点が2つあり、1つ目は思った以上に非常に大きい数値が算出されてしまうこと、2つ目は仮説集合𝐻(≒分類モデル)が無限の場合に対応できないこと。

実際問題、パラメータ数次第で分類モデルの構築方法は無限に考えられるので(だからパラメータチューニングが難しい)、仮説集合Hが有限となるシチュエーションは限られています。


VC次元による問題解決

仮説集合Hが有限でなければ先ほどの計算式のうち|H|が∞となり、必要な訓練データ数ℓも∞に発散してしまいます。そこでVC次元という考えを導入して、仮説集合HではなくVC次元数dによって下記式から必要な訓練データ数にあたりをつけます。

さて、それではVC次元とは何なのか??朱鷺の杜Wikiに再登場して頂きましょう。勝手に私が要約した内容が以下です。

・shatterするとは,点集合のそれぞれの点にどのようにラベルをつけても,それらの点を分離するような関数(≒分類モデル)がその仮説集合𝐻に含まれること.

・n個の点に対して,任意の配置とラベルであってもshatterできるような関数があり、それ以上点を増やすとshatterできなくなるとき,その関数(≒分類モデル)のVC次元は n.


ICML2017でも研究対象に

パラメータ再利用の転移学習時のリスクを算出するために、PAC学習やVC次元が利用された研究があったようです。

論文:
Risk Bounds for Transferring Representations With and Without Fine-Tuning

ちょっと理解するのが難しそうなので、これはまた今度で・・・・←

 

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がそれっぽくなるような制約を加えることで結果が出ています。また、重み共有でドメイン間の事なりによる差分成分を分離できた点も、予想以上に直感通りの挙動を示したという驚きです。

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”がアップデートされていないことが原因らしい。次のコマンドでアップデートとしてやると良い。

これで解決

レベルを上げて物理で殴る!?最新モデルよりもチューニングをちゃんとした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回繰り返して読んで歴史や経緯を辿った知識定着をさせないと合格困難な試験と思われます。

IoTシステム技術検定試験 by MCPC 難易度と合格までの勉強時間

IoTシステム技術検定試験とは

その名の通りIoTに関する検定試験です。
http://www.mcpc-jp.org/iotkentei/gaiyou.html

主な出題範囲は以下3点
・通信技術(通信規格、プロトコル、ネットワーク設計)
・センサ技術(各種センサの特徴と仕組み)
・データ活用(データベース設計、機会学習)


試験の難易度

ここでは『中級』について言及します。というのも私が受験したのが中級だからです(検定種類としては『基礎』『中級』『上級』があります。)

はっきり言ってこれで中級??と疑ってしまうほどの易しさです。

4択問題×80問の構成ですが、「センサが収集したデータはもれなく全てサーバに送信する必要がある」など中学国語テストでよくある「全て」「必ず」「常に」を含んだ明らかにダミーとしか思えない選択肢の数々。

データ分析も出題範囲に含まれるので期待していたら教師あり学習・教師無し学習・強化学習の違いを問う程度のレベルで、「ニューラルネットワークする」という意味不明なバスワード釣りダミー選択肢も存在

感覚としては「CoAPってプロトコルの一種で、たしか軽いんだよな~」「MQTTってサブスクライバーとパブリッシャーってのがなんかするんだよな~」くらいの理解度で合格できます。

もう少し具体的に述べると公式テキストを2回読めば大丈夫です。記憶力の良い人は1回でいいでしょうけど、知識定着のために同じ本を2回読むと効果的です。

公式教材 IoT技術テキスト -MCPC IoTシステム技術検定 対応


勉強時間

公式テキストを2回読むのなら20時間あればお釣りがきます。通勤電車で片道30分ずつ平日に読めば1カ月で準備できますね。


試験の良い点

さて、難易度が低いとDisったようになりましたが無論よい点もあります。それは試験範囲の網羅性が高くて技術の目利き力を養える点です。IoTではどんなことが課題になているのか、この技術的はどんな課題を解決したのか、どんな課題が未解決なのか、今後はどんな課題に直面するのか、特に通信技術に関しては歴史とあわせて網羅的に記載されています。

システム設計スキルは本試験だけでは基礎的すぎて不足するかもしれませんが、技術を網羅的に見て目利き力を養うには良い試験です。

 

CCライセンスまとめ

①表示(BY)

原作者のクレジット(氏名、著作物タイトルなど)を表示する。

 

②非営利(NC)

営利目的での利用をしない。

 

③改変禁止(ND)

元の作品を改変しない。

 

④継承(SA)

改変した場合、元の作品と同じライセンスで公開する

 

実際はこれらの組み合わせでCCライセンスを設定します。




IoTシステム技術検定 試験対策⑤

IoT技術テキスト -MCPC IoTシステム技術検定 対応

今回はIoTシステム技術検定の試験対策として「第6章 IoTシステムのプロトタイピング開発」を中心にまとめます


データフォーマットの検討(CSV):
データがコンパクトで処理が速い。ただし、構造化データの弱い。シンプルなセンサデータであればCSVが適任。

データフォーマットの検討(XML):
トランザクション処理向き。構造化データに強い。処理時間がかかり、レコードが大きくなりがち。

データフォーマットの検討(JSON):
エスケープ処理に対応。構造化データに強い。CSVに比べるとレコードが若干大きめで処理速度も劣る。

FabLab:
3Dプリンタなどの先進的な工作機械を備えた市民工房。

マイコンボード(Arduino):
イタリアのマッシモ・バンジらによって開発されたマイコンボード。センサやアクチュエータなどを簡単接続できるため電子工作が手軽に可能。開発言語はJava以外にも独自言語が用意されている場合も多い。

コンピュータ(RaspberryPi):
英国のRaspberryPi財団が開発したコンピュータボード。OSを持っている点が特徴。モニタディスプレイやキーボードやLAN接続で廉価版PCとしても動く。

GPIO+アナログ信号:
General Purpose Input/Output(汎用入出力)の略語。アナログ信号を入出力する場合はマイコン側でA/D変換やD/A変換がなされる。入力として動作した場合は電気回路のほかの部分からのデジタル信号を読み取る。出力として動作した場合は他デバイスの制御や信号の通知を行う。デジタル出力のセンサ値をマイコンに伝える入力や、マイコンの演算結果をLEDで表示したりする信号を出力したりする時などに利用。

シリアル通信:
送受信によるプログラム制御によって、伝送路上を一度に1ビットずつ逐次的にデータを送る。送受信に用いる信号線の数はUARTは2本、I2Cが3本、SPIが4本。

電波強度RSSIの季節性:
電波は水分によって減衰するので、秋や冬に電波が良く通っていても、春や夏には電波が届かなくなることがあるので要注意。

IFTTT:
「レシピ」と呼ばれる個人作成もしくは公に共有しているプロフィールを使って数あるWebサービス同士で連携することができるWebサービス。TwitterやFacebookなど人気サービスはほぼ網羅されている。

myThings:
ヤフーが提供するIFTTTに類似したサービス。さぁどちらが本家かな?