ニューラルネットワークで次元圧縮してみる?

自然言語処理

どもMakです。みなさん今週もお疲れ様でした。
昨日は少しネガティブな記事になってしまいましたが、どうかご心配なく。すっかり書く意欲を取り戻しました。

方向性とか、需要と供給のミスマッチとか、考え出したらキリがない訳ですが、それは時間があるときに少しずつ軌道修正していったらいいかなと。

今の最優先課題は「続ける」ことにあると思ってるので、とにかく、最低120記事の目標を達成するまでは、何があろうと、毎日書き続けます。もちろん昨日のように、「何も書けない」という心持ちに襲われることがこれからもあると思いますが、それはその時で、文章じゃなくて写真でもいいし、落書き程度のドローイングでもいいし、それも難しければ昨日みたいに「何も書くことがありません」と正直に書くことにします(笑 要はゆるーく続けようと。

で、今日は何書くの?

何書きましょう。笑 そういえば、前回の高次元空間をどう圧縮するか?の話がまだ途中でした。この途中をゆるっと書くことにしましょうか。ニーズ?そんなの関係ねぇっ(笑

前回のまとめ

mak-japan.hatenablog.com

メロンパンの美味しい食べ方について書きましたよーっと。というのは冗談です。笑

正しくは高次元空間をメロンパンに例えたらどーなるの?って話でした。
高次元空間では次元に呪われたりメロンパンがサクサクになりすぎたりするせいで、データの空間における位置やデータ同士の距離感がおかしなことになっており、このせいで機械学習がうまく進まないよーって話をしました。

んじゃー高次元空間を圧縮するにはどーすんべ?というところで、

という選択肢が代表的で、前回の記事では特異値分解についてゆるっとご紹介しました。

で、今日はニューラルネットワークについて書こうと思ったのですが、あと10分しか割ける時間がありません笑

なので、これまた全体的にゆるっとご紹介して終わるといういつもの流れになりそうですが、頑張ります。。

ニューラルネットワークで次元を圧縮する

SVDの延長で話をしたかったものでトピックモデルというものがありますが、これはまたいつか気が向いた際に。で、今日はニューラルネットワークでの圧縮手法について、説明していきます。ニューラルネットワークと一言にいっても本当に日進月歩の分野でして、パッと思いつくだけでも、

などなど様々なモデルが存在しています。この細部を説明するのは少し大変(自分自身理解しきれていない部分も多い)ですので、ここでは全体に通底するざっくりとしたアイデアを説明します。

まず基本的なニューラルネットワークは、以下のような形をしていることが多いです。

f:id:Np-Ur:20180115072550p:plain

画像の出典:http://www.randpy.tokyo/entry/word2vec_skip_gram_model

ここで、隠れ層のサイズが、入力層のサイズよりも小さくなっているのがポイントです。つまり、入力データが、隠れ層で一旦圧縮されることになります。

オートエンコーダと呼ばれるモデルでは、入力と出力に全く同じデータを用います。
つまり、隠れ層で情報を圧縮しておいて、出力層では入力層をできるだけ再現できるように、学習が進むことになります。

ここで、学習とは、重み行列W(要するに数値の並びです)を調整していくことを意味します。

はるか昔に、機械学習の記事にて、y=ax+bの関数があったとすれば、学習とはパラメータa,bを過去のデータから求めることだ、という話をしました。

mak-japan.hatenablog.com

ここでは、重み行列Wがaにあたります。次元が増えているので、求めるものは行列担っていますが、基本は同じことです。

ここで数式でも表現してみると、入力行列をX、重み行列をW、バイアス(ここでは特に気にしないでOKです)をbとすれば、

(中間層)=WX+b

で表されます(本来は活性化関数という非線形関数を通すのが基本ですが、ここではわかりやすさを重視します)。

このとき、中間層と出力層の間にも重み行列がありますが、これはWの転置行列が使われることが多く、これをW’とすれば、

(出力層)= (WX+b)W’+b’

となります。これが、入力のXにできるだけ近づくように、計算してWを求めていく、というのが「学習」です。

実はこれ、活性化関数を使っていない場合は先日話したSVDベースの手法(機械学習界隈ではPCA(主成分分析)としてよく知られている)と実質的に同じ結果になることが、数学的に証明できるような、できないような(どっちやねん。笑 冗談はさておき、証明可能だと思います。活性化関数なるものを挟むと非線形になるのでオートエンコーダとPCAでは違いが出てくるという認識ですが、正直理解浅いので後日勉強する)

で、よーするに

ニューラルネットワークでめっちゃホットやねん。

というのが少しでも伝われば、嬉しいです。

コメント

タイトルとURLをコピーしました