2022-04-17

"ゼロから作る Deep Learning 2 - 自然言語処理編" 斎藤康毅 著

「ゼロから作る Deep Learning」第二弾...
ここでは、自然言語や時系列データに焦点を当てる。人間の行為をコンピュータに肩代わりさせるなら、まず人間とやらを知ること。そのアプローチの一つに、人間の表現力、すなわち、人間が操る言語に着目してみるのも悪くない。
しかしながら、人の話す言葉をコンピュータに理解させるには、一筋縄ではいかない。ウェブ検索、音声認識、機械翻訳など自然言語にまつわる技術には、その裏でディープラーニングとやらが暗躍し、何かを推論し、何かを学習してやがる。それは、自発的なものなのか...

ディープラーニングとは、層を深くしたディープなニューラルネットワークを言うらしい。それは、単純な伝達関数を複雑に結合した数理モデルで、その特徴はデータから学習するところにある。この分野は加速度的に進化しているだけに、慌ててライブラリやフレームワークに飛びつこうとする。ネアンデルタール人は、理解できていないものを、ただ使い方を学んで利用するのでは自分の意志で生きている気がしない。のんびりと精一杯やるさ...

「作れないものは、理解できない。」... リチャード・ファインマン

第一弾では特に、損失関数に数値微分を与える視点から、誤差逆伝播法という考え方に注目した。結果に評価を与え、それを後方に伝播させながらデータの重みを調整するというやり方は、まさに人間がやっている学習法だ。成功より失敗から多くを学ぶのは、コンピュータとて同じと見える。
では、自然言語を合理的に理解するには、どうすればいいだろう。まず、単語レベルで意味を理解するということがある。辞書や類義語などを集めたシソーラス、あるいは、Wikipedia のような大量のテキストをデータベース化するといったことも考えられる。
しかし、人工知能的なやり方といえば、やはり推論であろう。人間には、知らない単語でも、文脈からなんとなく汲み取れる感覚がある。文法に則って言葉を羅列するのではなく、どんなふうに言うか、その言い方や言い回しを経験の中から探りながら喋っている。口癖ってやつは試行錯誤のうちに身につき、無意識に発声することもしばしば。無意識な領域までコンピュータに任せるとなれば、そりゃ手ごわい!分からんことは、ワトソン君にでも聞くさ...

本書は、推論ベースの方法を話題の中心に据え、Python で記述して実装イメージを与えてくれる。推論というからには、使用頻度や確率分布といった統計学的なサンプリング手法を用いる。

まず、単語を数学的にマッピングする word2vec が紹介される。名前からして、単語をベクトル空間にマッピングするイメージがわき、行列式との相性を予感させる。
ここで使われる「分布仮説」という概念は興味深い。単語の意味は、単語そのものより周囲の言葉との連結によって解釈しているところがある。
実装では、コンテキストから単語の出現を推測する CBOW(continuous bag-of-words)と、逆に単語からコンテキストを推測する skip-gram の二つのモデルが紹介される。人間の会話では、出現した単語から相手が何を言いたいかを予測しながら聞いているところがあるので、人間感覚には後者の方が近そうか...
また、word2vec の高速化手法として、Negative Sampling というものが紹介され、確率分布の各要素に 0.75 を累乗するという考え方は興味深い。つまり、確率の低い単語に少しばかり重みをつけるという考え方である。相対的にバイアスをかければ、人間主観より語彙が広がりそうか...

次に、フィードバック経路を持つ RNN(Recurrent neural network) が紹介される。線形性を保った物理現象は、時系列的に予測可能である。あまり遠くの時間でなければ。フィードバックとは、過去の状態を参照することであり、いわば経験値である。言葉の精度には、やはり経験がモノを言いそうである。
実装では、時系列データを扱うために改良された二つのゲート付き RNN が紹介される。LSTM(Long Short Term Memory)をメインで解説し、GRU((Gated Recurrent Unit)を付録に。
LSTM は、その名の通り、長期と短期の記憶を元にデザインされた仕掛け。注目したいのは、forget ゲートを配置するところである。忘却によって合理性を保つのは、精神を患う人間だけではなさそうだ。人間だったら、苦労して獲得した知識ほど重宝しがち。見返りの原理ってやつだ。実は、記憶ってやつは、忘却することの方が難しいのかもしれん。しかも、合理的に...

さらに、機械翻訳をそのままイメージできる seq2seq が紹介される。RNN を連結して、ある時系列データを別の時系列データに変換するイメージで、Encode-Decode モデルとも呼ばれるらしい。
そして、Attention という技術で締めくくられる。それは、人間と同じように、ある情報に注意を向けさせる仕掛けで、必要な情報を抽出して、seq2seq にかけるイメージだが、結局、情報の重みの評価に引き戻された感がある。
人間の認識能力なんてものは、たいてい注意で説明がつくってか。人生は短い。注意すべきこと以外のことに関わっている暇はない。これが合理的に生きるということであろうか。
しかしながら、人間ってやつは、注意すべきことより、どうでもいいことに注意を払う傾向がある。例えば、機内で発せられる台詞にゾクゾクしたり... Attention Please!

0 コメント:

コメントを投稿