2017年7月3日0件のコメントこんにちは、GMOアドマーケティングのMHです。現在、GMOアドマーケティングでは機械学習の勉強会を行っています。Learningをみんなで輪読をしているのですが、出来るだけ数式を使わないでコードで説明しようとしてくれているため、非常に分かりやすいです。それでも章を進むに連れて、前提となってくる用語などが増えてきますので、「あれこの用語なんだっけ?」となることがしばしばありました。入力として、出力が切り替わる関数のことを指しますパーセプトロンではステップ関数が使われ、ニューラルネットワークではシグモイド関数/ReLU(ランプ関数)がよく使われます。閾値を境に出力が切り替わる関数のことです。そのため、ステップ関数は一定値を超えると急に値が切り替わる様な動きをします。xが0以下だと0となり、0より大きいと1となるような関数です。以下の数式で表される関数のことです。1/(1+exp(-x))シグモイド関数はステップ関数とは違い、数字が入力値によって連続して変化していき、緩やかな逆S字の出力となります。ニューラルネットワークやディープラーニングでは以下の理由により、よく使われます。傾きが求まる(必ず微分可能)出力が0−1に収まる誤差逆伝播法で微分する際の計算コストが軽いReLU関数(ランプ関数)入力が0以下なら0、0以上ならそのまま出力する関数のことです。以下の数式で表せます。{x(x>0),0(x<=0)}誤差逆伝播法を使用した際の逆伝播時の動作としては、以下のようになります。0以下なら伝播をストップ(0を流す)0以上ならそのまま流すニューラルネットワークにおける活性化関数ニューラルネットワークは簡単に表すと以下の構成になっています。入力層から隠れ層などの次の層に遷移得する際に活性化関数を通して値を変化させていきます。ニューラルネットワークでの活性化関数には線形関数は使わず、非線形関数である必要があります。線形関数では、入力が単に等倍されるだけとなってしまい、ニューラルネットワークの隠れ層を増やす意味が無いからです。出力層は最終的に出てきた値を求める値かどうかを判定や分類するための層となります。そのため、出力層に遷移する際にはそれまでとは別の活性化関数を利用します。回帰問題で利用されます。出力結果の総和を自分自身の値で割ります。出力結果に対する割合を表します。利用して、出た結果を元に重みを増減するときに利用する関数です。重みの増減は微分を用いてどの程度移動するかを算出します。活性化関数そのままではなく、損失関数を通して調整をするのかというと、活性化関数の値そのままでは、振れ幅が大きすぎてしまい、パラメータの調整が難しいためです。損失関数を通すことによって、パラメータの微妙な動きに出力を連動させ、出力の値を連続的な数値に均す事ができます。全部の正解データと出力データとの差を2乗します。そのため、必ず正の値になります。Pythonでの実装例としては以下となります。正解ラベルに対する出力の自然対数とします。Pythonでの実装例としては以下となります。-np.sum(t*np.log(y+delta))ソースコード上にてdeltaを足しているのはyが0の場合、log(0)=マイナスの無限大での計算が発生してしまい、計算を進めることが出来なくなってしまうためです。勾配法(勾配降下法)勾配法には以下の2種類があります。基本的には、損失関数を最小化するように重みを更新するため勾配降下法が利用されます。重みの更新は、入力〜出力→損失関数の一連の数式に対して、微分を行い、重み移動を少しずつ繰り返すことで、損失関数を最小化させていきます。ミニバッチ訓練データの中からランダムにデータを抜き出して学習をさせることをミニバッチといいます。ミニバッチを利用するということは、一部のデータを全体の近似として利用することになります。最終的な損失の値を訓練データの数で割ることで平均の損失値を求める形になります。よって重みを更新するには勾配を求める必要がありますが、数値微分で求めてしまうと非常に多くの時間がかかってしまいます。そのため、解析的に数式を説いて求める方法として、誤差逆伝播法を利用します。数値微分が全く使われないかというとそうではなく、数値微分の利点としては実装の簡単さがあげられます。そのため、誤差逆伝播法の結果確認として数値微分を利用する事に利用されます。如何でしたでしょうか。Learningに出てくる基本的な用語について纏めました。Learningを読んでみてください。@gmoap_engineer本ブログで発信される情報は、各エンジニア個人の見解であり、弊社の公式見解ではありません。本ブログに掲載、引用等をしている商品またはサービス等の名称は、各社の商標または登録商標です。その他の事項について一切責任を負いかねます。発表する情報には注意を払っておりますが、公式発表、見解については、弊社WEBサイトおよびプレスリリースなどをご確認ください。GMOインターネットグループにおけるソーシャルメディア運用ポリシーについては次のページをご確認ください。本ブログに掲載のあるソフトウェアのダウンロードは自己責任で御願い致します。ソフトウェアのダウンロードの結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。本ブログに掲載のあるソフトウェアを扱う際は、各ソフトウェアの公式リファレンスを参照のもとご使用下さい。ソフトウェアの実行の結果、ご利用者に何らかの損失・損害が生じたといえども、当社ではその責任を負いかねます。