2016/01/16

[ai]『深層学習』を読む (8)

PC/SCもひとまず動かしたし、ESP8266もちょっと動かしたし、中途半端に残っているのは深層学習だ。
前回が2015年10月18日で、かなり空いてしまったが、このシリーズを終わらせてしまおう。

機械学習だから「[ai]」と振ってるけど、AIは「人工知能」だな。
機械学習は「ML」(Machine Learning)なのかな?
でも、MLっていうとメーリングリストだよなぁ。

 

今まで読んだ範囲では、深層学習はニューラルネットを使ったクラスタリング処理だ。
入力した情報がどのクラスに属する確率が一番高いかを出力する。
クラス分けをする元ネタは誰かが作ってやらないといけないけど、インターネット上に画像やら文字などがいっぱい情報としてあるので、ネタ元に困りにくくなくなってきた。
今までのニューラルネットよりも学習効率がよくなったのと、学習のためのインプットが充実してきたから使い物になってきた、という印象を受けている。

いや、ディープラーニングなんて大したことない、ということじゃなくて、お金の臭いがするからってむやみに騒ぎ立ててもなあ、と思ったのだ。
勝手に騒いで、勝手に失望するってのも、技術がかわいそうだ。
まあ、私もその尻馬に乗ってる感じがするから、人のことは言えんけどね。

それに、読んでる本は基礎技術の説明なので、いろいろと応用もあるのだろう。
printf()したら文字が出力される、くらいの知識を付けようとしていると思って、謙虚(?)にしておこう。

でも、多少は本気になってみようと思ったので、実践的な本も買ってみた。

image

タイトルに「実践」となってるから、きっと実践的だろう。
右は、おまけの卓上カレンダー。
別に卓上カレンダーがほしくて買ったわけじゃないからね。


さて、前回は6章の「畳み込みニューラルネット」だった。
記憶にほとんど残ってないけど、画像のクラスタリング向けだったと思う。

第7章は「再帰型ネットワーク」(全部で8章まである)。
これは、データが時系列というか、ストリームというか、そういうもの向けのようだ。
文章とか動画とか音声とか。
略称は「RNN」。Recursive Neural Network、かと思ったが、本ではRecurrent Neural Networkと書かれていた。
「循環ニューラルネット」ともいうらしいので、まあ、どっちでもよいのかも。
迷ったら「ああ、RNNですね」と略語で言っておけばよいだろう。

 

まず、こういう並びが意味を持つデータを学習する、というのはどういうことを対象にするのかが書かれていた。
文章だったら、次の単語。音声だったら、次の発音(発音と言うよりは、音素、というもの)。
こういう、デジタルで処理するのであれば、ものごとをデジタルに落とし込むところから始めなくてはならん。

RNNの構成は、今までのが一方向に伝わっていくタイプだったのに比べると、フィードバックのように戻りがある。
それによって過去の分が反映されることになるので、再帰型と呼ぶようだ。

戻すと言えば、バックプロパゲーションってものもあったと思う。
日本語だと「誤差逆伝播法」らしい。
これは第4章だった。
バックプロパゲーションは次の層の出力がバイアスを掛けて戻されるけど、RNNは今の層の出力がバイアスを掛けて戻されるのかな?
BPTT法とかいう計算方法のBはBackpropagationのBみたいだから、近いものはあるのかも。

バックプロパゲーションもそうだったけど、勾配消失問題があるとのこと。
発散してしまうか、0に収束してしまうか。
それを調整するのに、忘却ゲートというフィルタというか制限装置というかが入り、1に近いものだけが取り込まれるようにする方法が説明されている。
こういうのを見ると、本では数式がたくさん書いてあるけど、実際にプログラムを作って動かして「あー、値が消えてしまいそうだから、ここにif文入れて調整してみるか」みたいな感じでやったりしたんだろうか、などと思ってしまうな。

 

基本的に、1つの入力に対して1つの出力になるから、音声データから音素を推測しようとすると、「あいう」が「ああああいいいいいううううううう」みたいな感じになってしまうそうだ。
こういうのを回避するために、2つ方式がある。

1つは、「隠れマルコフモデル」。HMM。
こういう「隠れ」とかついてると、何か憧れますな。
隠れているのはマルコフさんじゃなくて、状態変数。
音声の場合だと、音の始まり、中間、終わり、みたいな状態を持ち、それを裏で回すらしい。
これは、なんとなくわかる気がする。
ニューラルネットとは関係なく、音の大きさが変化するとか、何か違いがあるところで「状態が変わる」と見なすのだろう。

もう1つは、「コネクショニスト時系列分類法」。CTC。
こっちは、ニューラルネットだけで解決する方法のようだ。
すまん・・・説明を読んでもよくわからなかった。。。
なんとなくだが、冗長性とか出てくるので、正規表現を思い起こさせる。

HMMはあらかじめ学習前にどういう状態を取るか考えないといけないけど、CTCは学習によってうまいことやってくれる、とかだろうか。


はい、かなり斜め読みだけど、7章まで終わりました。
数式に踏み込んでないし、わからないところは読み飛ばしているからだろうけど、あんまり理解した気になれない。。。

でもまあ、これまでで静的なデータに対するものと、動的なデータに対するものが出てきた。
最後の第8章は何が出てくるのだろうか?

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。