Coursera machine learning week4(まとめ)
今回と次のweekでニューラルネットワークについて紹介されています。では早速やっていきます。
この週で述べられていることは次の通りです。
・Neurons and the brain(ニューロンと脳)
・Model representation(モデルの紹介)
・Examples and intuitions(例と直感的理解)
まず簡単に導入部分について説明します。なぜニューラルネットワークが使われるのかという点に注目しています。例えば次のような分類問題を分けると赤線のような非線形(直線ではない)になります。今まで通りロジスティックを利用して説明変数を多くすれば解ける問題ですが、変数が100とか1,000になってしまい計算に時間がかかってしまいます。それで済めばいいのですがより正確な学習をしようとすると過学習の恐れがあります。
変数が多くなる例として画像認識があります。コンピュータではRGBという数値で物体を判断しています。例えば次のような車の一部を数値化しただけでもかなりの量があります。そうなると計算量が莫大になってしまう。ここで登場したのがニューラルネットワークという人間の脳を模倣した考え方です。
・Neurons and Brain
ここで簡単にニューラルネットワークの歴史と脳細胞の仕組みについて紹介されています。
起源:1980~1990年代に幅広く使われたが90年代後半に人気が落ちた。最近ではコンピュータの処理速度が上がったりして、再び注目されるようになった。
・Model representation
脳の中の神経は次のようになっています。Dendrite(樹状細胞)が情報を取り込む役割をしていて、Axon(軸索突起)が情報を出す役割をしています。
上記の構造をLogistic unitを使用してモデル化したのが下記の通りです。左側のx1とかが入力データで右側が出力データです。x0と新しく加えられたのがありますが、こちらはバイアスです。大抵1で処理されます。
先ほどのモデルの層を一個増やしてみます。layer1がinput layer(入力層)でlayer2がhidden layer(隠れ層)、layer3がoutput layer(出力層)と呼ばれます。
またこの入力層や隠れ層、出力層をつなぐために式を用意します。aはactivation(活性化)の略で、意味はあるニューロンから次のニューロンへと出力する際にあらゆる入力値を別の数値に変換して出力する関数です。ここでは隠れ層から出力層に送るために変換活性化関数については軽くまとめてあるのでご覧ください(引用リツイートで軽くそれぞれの関数を説明しています)
θはここでは重み(係数)を指しています。jは現在のレイヤーを指しています。iはunitを指しています。これを踏まえてもう一度θを見るとj層からj+1層への重みを表す行列となります’。
また入力層から出力層へといく流れのことを順伝播法と言います。逆伝播法については次回の週で紹介されています。x0とはなんぞやと思うかもしれませんが、これはバイアスです。
また上記の式をベクトル化した際に新たにzというシグモイド関数の中にあるパラメータを含んだ変数を定義します。
試しにレイヤー2をベクトル化してみると次のようになります。
・Examples and intuitions
ニューラルネットワークではandやorを使用して演算することもできます。例えばレイヤー1からレイヤー2にかかるバイアスが次のようだった場合を考えます。
これを仮説関数に当てはめてみます。
さて問題です。x1=0, x2=0の場合g()値は何なるでしょう。
簡単ですね、答えは−30です。では0と1どちらに近いかというと勿論0ですね。では次にいきます。もしx1=1, x2=1の場合はどうでしょう。答えは10で1に近いですよね。それぞれ場合分けした場合が下記の通りです。
またそれ以外にもNORやORで演算することもできます。その場合のパラメータはこちらです。
ORの場合の上記のパラメータを使用してg()を求めてみると
NOTの場合は次のようになる。先程のAndとの逆になります(0が1、1が0)
先程のAnd、ORを組み合わせてXNORを表現すると右下のようになる。
この後手書き文字の識別の動画が流れ、最後に多クラス分類をやった。先程までのニューラルネットワークまでは二値分類(0, 1)だった。仮4つのクラスに分類したい場合は今までは1,2,3,4と分類してきたが、ニューラルネットワークでは次のように表現する。
今週は以上です。来週もニューラルネットワークです。
この記事が気に入ったらサポートをしてみませんか?