1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Deep Learning#数学の勉強1

Last updated at Posted at 2020-01-18

ニューラルネットワーク?

簡単にいうと人間の脳を真似して作ったものです。
image.png
ちょっと抽象過ぎるかもしれませんが、ここで実際の例で例えて見ましょう。
トマトの色、柔らかさ、糖度でこのトマトはAランクからEランク分ける。
image.png

重み

ここでもう一つ出てくるのは重みです。
重みはニューラルと接続し、この情報の重要さ・関連度を表す指標です。
最適な重みはもちろんわからないから、この重みを求めるために機械学習を活用します。
人間は色々なトマトをみて経験と勘が蓄積されてき賢くなる。機械学習も同じく、この重みを学習します。

そして層をどんどん増やし深くになり、Deepのニューラルネットワークになります。
それの重みを学習するのはDeep Learningになります。
image.png
ニューラルネットワークは入力値を重み付けされさんがらニューラルに流れていって、最後はなかかしらの値が出力されます。ここで大きな関数一つとして見てもよいでしょう。
image.png

パーセプトロン

基本と数式絵としての仕組みは:
image.png
パーセプトロンはシンプルで各入力と各重みを掛け算し、最後を足し算します。
image.png
そして結果がより小さいなら出力が0でが0より大きなら出力が1になります。
つまり:
image.png
では数式が単なる足し算と掛け算なので、総和を使うとこうになります:
image.png
そこでベクトルで入力xと重みwを表示させるとこうになります:
image.png
このようにシンプルかけます。
image.png

バイアス

いまからしきい値の表現ついて話しします。
パーセプトロンがどれくらい1を出力しやすいか、という偏りをコントロールする値です。
ちょっと数式を変換したら、こうになります:
image.png
そこで、bに代入します。
image.png
でも実際このバイアスがどんな風に出力を影響するでしょうか?
ここで数字を入れて確かめてみます。
b=100になると1がb=0よりはるかに出やすくなります。
image.png

次はパーセプトロン使って画像が縦長か、横長を判定してみます。
48x72の画像を入力します。本来なら重みが求めないと行けないですがちょっと面倒くさくなりますのでここで設定しておきます。
image.png
x1=48、x2=72 w1=1、w2=-1、b=0
image.png
そして先書いてた内積の式を使うと:
image.png
そのあと-24を出力が0か1かを判定します。
-24は0より小さいので出力が0です。
y=0、つまりこの画像が縦長です。
image.png

パーセプトロンの欠点

ここで、また例題を作りましょう。今度はパーセプトロンを使って画像が正方形かどうかを判別してみます。式は同じです。
image.png
ここで問題が出てきました。どうやらパーセプトロンが判定できないみたいですね。
image.png
では、なぜ判定できないのかをちょっとみてみよう。
まず下の図を見ましょう。もしグループで分けないといけないなら、線をどう引きますか?
image.png
左の図は一本直線で◯と☓を分けることができますが、右の図はどうでしょう。どうやっても直線で分けることができませんね。
ここで重要なPOINTとしてはー

  • 直線で分離できる問題は線形分離可能と呼ばられます。
  • 直線で分離できない問題は線形分離不可能と呼ばられます。

image.png
ここで出てきたのは多層パーセプトロンです。ニューラルネットワークはこのように境界線を引くことができます。
image.png

多層パーセプトロン

こんな風になります。
image.png
1つ1つをばらしておくと、このようにも見えます:
image.png
計算は難しそうですが、A、B、Cのパーセプトロンを1つずつ計算すればOKです。
それそれの重みを持って、最終は1か0かを出力するだけです。
image.png
ばらばらになったらこうみたいですね:
image.png
数式はまったく一緒です。
結果が1出力され、この入力画像は正方形ですって判別できます。
image.png
先の正方形判定でニューラルネットワークが線形分離不可能な問題でも解けそうってわかりましたね。もう一度になりますが、このニューラルネットワークを1つ大きな関数として考えたら:
image.png
重みの数:層同士のUnitをつなぐ線の数。
バイアスの数:その層にあるUnitの数。
image.png
表現としては:
image.png
それらの説明を踏まえて、ネットワークはこうに見えますね。
image.png
そしてベクトル表現になりますと:
image.png
さらに、1層目の2つのパーセプトロンの計算式はこうにかけます:
image.png
いまから重みは行列、バイアスがベクトルにまとめます:
image.png
転置したベクトルを縦に並行列を作ります。
image.png
このように2層目もこんな風に定義できます。
image.png
次はバイアスも同じように層ごとに定義し、各層のバイアスを縦に並びます。
image.png
今度はニューラルネットワークの図を見ましょう。
image.png
この図の第1層はこのような式で表現できます。
image.png

活性化関数

まず最初にパーセプトロンの計算するとき、内積とバイアスが0を超えるかどうかで0か1かを出力する操作がありますね。これはStep関数と言います。
このようにしきい値によって0,1を出力するような関数は活性化関数です。
英語はActivation Function。
image.png
例えば1つのベクトルを渡すと、各要素に対しても適用できます。
そして重みやバイアスのように層ごとに定義することができます。
image.png
もう一度見てみましょう。
image.png
まず入力値x1、x2はベクトルで表すと:
image.png
統一で書きますので、0層からの入力値をこんな風に書きます:
image.png
そのあとそsれに対して一層目の活性化関数に適用します。
つまり、活性化関数を通して隠れ層からから出力されます。
image.png
そして一層目から二層目への入力値はこうになります:(単なる一層目の出力)
image.png
今度は繰り返しして、一層目から入力値に二層目の重みやバイアスを使う。
image.png
そして同じく第2層の活性化関数も適用。
image.png
いまのネットワークは二層までなのでそのx2はそのネットワークの出力になります。
image.png
まとめにいうと、ニューラルネットワークの計算は重み行列とバイアスを入力値に適用したあとに活性化関数を通す、という操作を繰り返しことです。計算はパソコンに任せ、私たちは実装するだめです。
image.png

一般化

最後は一般化でまとめます。入力がn個があり、隠れ層はm個があり。
つまり、入力層のUnitはm(0)個、l層目のUnitはm(l)です。
入力層以外のニューラルネットワークの層がLである。
image.png
そのとき、入力ベクトルはx(0)、l層目の重み行列はW(l)、l層目のバイアスb(l)で表示する。
注意するのは要素がずれるとW,Xの積、bの和が計算できなくなる。
image.png
入力ベクトルはm(0)x1になります。
そしてl層目の出力値は:
image.png

活性化関数についてもう少し

最後活性化関数についてもう少し話しします。
そもそも、もし活性化関数がなくなってしまったらどうになるのかな。
じゃバイアス抜きでやってみよう。
image.png
なにかの活性化関数がついたら、
image.png
もし活性化関数なかったら、a(2)とa(1)を抜いてきて。
image.png
つまり、単層パーセプトロンになってしまう!まとめて表示すると、
image.png
image.png
次出てくる話になると、じゃどんな関数を使うのか?ですね。

f(x)=xだろうかf(x)=0.3xだろうか、計算がそのまま次はの層に伝えてしまうのである。
まず非線形を使うべきじゃないかな?(シグモイド関数とか?)
image.png
でも
image.png

はーい、以上です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?