特徴クロスユニットを思い出してください。次の分類問題は非線形です。
図 1. 非線形分類の問題。
「ノンリニア」とは、フォームのモデルではラベルを正確に予測できないことを意味します。 \(b + w_1x_1 + w_2x_2\) つまり、「意思決定サーフェス」は線ではありません。以前は、特徴クロスを非線形問題をモデル化するアプローチの一つとして考えてきました。
次のデータセットについて考えてみます。
図 2. さらに難しい非線形分類問題。
図 2 に示すデータセットは線形モデルでは解けません。
ニューラル ネットワークが非線形問題にどのように役立つかを確認するには、まず、線形モデルをグラフとして表してみましょう。
図 3. グラフとしての線形モデル。
青い円は入力特徴を表し、緑色の円は入力の加重合計を表します。
このモデルをどのように修正すれば、非線形の問題に対処できるようになりますか。
隠しレイヤ
次のグラフで表されるモデルでは、中間値の「隠れ層」が追加されています。隠れ層の各黄色のノードは、青色の入力ノード値の加重合計です。出力は、黄色のノードの加重和です。
図 4. 2 層モデルのグラフ。
このモデルは線形型ですか?はい。その出力は、引き続きその入力の線形結合です。
次のグラフで表されるモデルでは、重み付けされた合計の 2 番目の非表示レイヤが追加されています。
図 5. 3 層モデルのグラフ。
このモデルは線形ですか?はい。そのとおりです。出力を入力の関数として表現し、簡素化すると、入力の加重和がもう 1 つだけ得られます。この合計は、図 2 の非線形問題を効果的にモデル化できません。
活性化関数
非線形の問題をモデル化するには、非線形を直接導入します。それぞれの隠れ層ノードを非線形関数を通してパイプできます。
次のグラフで表されるモデルでは、非表示レイヤ 1 の各ノードの値は、非線形関数によって変換されてから、次のレイヤの加重合計に渡されます。この非線形関数は活性化関数と呼ばれます。
図 6: アクティベーション関数を含む 3 層モデルのグラフ。
アクティベーション関数を追加したので、レイヤの追加による影響がさらに大きくなります。非線形に非線形を積み重ねることで、入力と予測出力との間の非常に複雑な関係をモデル化できます。つまり、各レイヤは、未加工入力に対してより複雑で高度な関数を効率的に学習できるということです。この仕組みについてさらに直感的に理解したい場合は、Chris Olah のブログ投稿をご覧ください。
一般的な活性化関数
次の sigmoid アクティベーション関数は、重み付けされた合計を 0 ~ 1 の範囲の値に変換します。
プロット:
図 7. Sigmoid アクティベーション関数。
多くの場合、整形済み線形単位の活性化関数(略して ReLU)は、シグモイドなどの滑らかな関数よりも少しだけ機能しても、計算がかなり容易になります。
ReLU の優位性は経験的な調査結果に基づいています。ReLU の方が応答性に優れた範囲にあることに起因しています。シグモイドの応答性は両側で比較的急速に低下します。
図 8. ReLU アクティベーション関数。
実際、数学関数はアクティベーション関数として機能します。 \(\sigma\) がアクティベーション関数(Relu、Sigmoid など)を表すとします。したがって、ネットワーク内のノードの値は次の式で与えられます。
TensorFlow は、さまざまなアクティベーション関数をすぐに使えるようにサポートしています。これらのアクティベーション関数は、TensorFlow のプリミティブ ニューラル ネットワーク オペレーションのラッパーのリストで確認できます。とはいえ、最初は ReLU から始めることをおすすめします。
まとめ
このモデルには、人々が「ニューラル ネットワーク」と言った瞬間の標準的なすべてのコンポーネントが入っています。
- ニューロンに類似した、ノードにまとめられた一連のノード。
- 各ニューラル ネットワーク レイヤとその下のレイヤ間の接続を表す一連の重み。下のレイヤは、別のニューラル ネットワーク レイヤやその他の種類のレイヤである可能性があります。
- バイアスのセット(ノードごとに 1 つずつ)。
- レイヤ内の各ノードの出力を変換するアクティベーション関数。レイヤごとにアクティベーション関数が異なる場合があります。
注意点: ニューラル ネットワークは常に特徴クロスよりも優れているとは限りませんが、ニューラル ネットワークには多くの場合に適した柔軟な代替手段が用意されています。