機械学習 - ニューラル ネットワークとモデル表現の概要

ニューラル ネットワークは非常に古いアルゴリズムであり、その本来の目的は脳をシミュレートできるマシンを作成することでした。現在、ニューラル ネットワークは重要な機械学習テクノロジです。これはディープラーニングの基礎であり、現在最も人気のある研究方向です。

導入

ニューラル ネットワーク モデルを構築するには、まず脳内のニューラル ネットワークがどのようなものかを考える必要があります。各ニューロンは、多くの入力/樹状突起 ( input / Dendrite ) を含み、出力/軸索 ( output / Axon )を持つ処理単位/核として考えることができますニューラル ネットワークは、相互接続され、電気インパルスを通じて通信する多数のニューロンのネットワークです。
ここに画像の説明を挿入します

モデル表現

ニューラル ネットワーク モデルは多くのニューロンで構築されており、各ニューロンが学習モデルです。これらのニューロン ( 活性化ユニット とも呼ばれます)は、いくつかの特徴を入力として受け取り、独自のモデルに基づいて出力を提供します。入力はニューロンの樹状突起と比較でき、出力はニューロンの軸索と比較でき、計算は細胞核と比較できます。
以下の図は、ロジスティック回帰モデルを独自の学習モデルとして使用するニューロンの例です。
ここに画像の説明を挿入します

中央の矢印線に注目してください。これらの線は「接続」と呼ばれます。各接続には「重み」があります。ロジスティック回帰を学習するときは、それをパラメータと呼びます。ニューラル ネットワークでは、パラメータを重みと呼ぶことができますニューロンにおいては接続が最も重要です。各接続には重みがあります。ニューラル ネットワークのトレーニング アルゴリズムは、ネットワーク全体が最良の予測効果を持つように重み値を最適な値に調整することです。

写真のh θ ( x ) {h_\theta}\left( x \right)h( x )シグモイド シグモイドs i g mo i d関数、つまり1 1 + e − θ T x \frac{1}{1+{ {e}^ { -{\theta^{T}}x}}} 1 + eT ×1

通常、入力層ではノードx 1 x 2 x 3 x1 x2 x3のみを入力します。x 1 x 2 x 3 、追加ノードx 0 x0は必要に応じて追加されます× 0×0×0x 0はバイアス ユニットまたはバイアス ニューロンと呼ばれます。×0 ×0x 0の値は常に 1 です。

ニューロンに似たニューラル ネットワークを設計しました。その結果は次のとおりです。
ここに画像の説明を挿入します
ニューラル ネットワークは、実際には互いに接続されたニューロンの集合です。
ここで、x 1 x_1バツ1×2×_2バツ2×3×_3バツ3生データを供給する入力ユニットです。
a1a_1ある1a 2 a_2ある2a 3 a_3ある3これらは、データを処理して次の層に提示する中間ユニットです。最後に、 h θ ( x ) {h_\theta}\left( x \right) の
計算を担当する出力ユニットがあります。h( × )

ニューラル ネットワーク モデルは、さまざまなレベルで編成された多数の論理ユニットのネットワークであり、各層の出力変数は次の層の入力変数になります。下の図は 3 層のニューラル ネットワークを示しています。最初の層は入力層 (入力層)、最後の層は出力層 (出力層)、中間層は隠れ層 (隠れ層)と呼ばれます。 各層にバイアス ユニットを追加します。
ここに画像の説明を挿入します
モデルの説明に役立ついくつかの表記法が以下に導入されています:
ai ( j ) a_{i}^{\left( j \right)}ある( j )jjを表しますjのiiiアクティベーションユニット。θ ( j ) { {\theta }^{\left( j \right)}}( j ) はjjからの開始点を表しますレイヤj はj+1 j+1にマップされますj+層1の重みの行列θ ( 1 ) { {\theta }^{\left( 1 \right)}}( 1 )第 1 層から第 2 層にマッピングされた重みを表す行列。そのサイズは次のとおりです:j+1 j+1j+レイヤ1のアクティベーション ユニットの数は、 jj 番目の行数です。層jのアクティベーション ユニットの数に 1 を加えたものが、列数の行列になります。例:上に示したニューラル ネットワークのθ ( 1 ) { {\theta }^{\left( 1 \right)}}( 1 )のサイズは3*4 です。

上図に示すモデルの場合、起動単位と出力は次のように表されます。

a 1 ( 2 ) = g ( Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 ) a_{1}^{(2)} =g(\Theta_{10}^{(1)}{ {x}_{0}}+\Theta_{11}^{(1)}{ {x}_{1}}+\Theta_ {12} ^{(1)}{ {x}_{2}}+\Theta_{13}^{(1)}{ {x}_{3}})ある1( 2 )=g ( Th10( 1 )バツ0+Th11( 1 )バツ1+Th12( 1 )バツ2+Th13( 1 )バツ3)
a 2 ( 2 ) = g ( Θ 20 ( 1 ) x 0 + Θ 21 ( 1 ) x 1 + Θ 22 ( 1 ) x 2 + Θ 23 ( 1 ) x 3 ) a_{2}^{(2) }=g(\シータ_{20}^{(1)}{ {x}_{0}}+\シータ_{21}^{(1)}{ {x}_{1}}+\シータ _{ 22}^{(1)}{ {x}_{2}}+\シータ_{23}^{(1)}{ {x}_{3}})ある2( 2 )=g ( Th20( 1 )バツ0+Th21( 1 )バツ1+Th22( 1 )バツ2+Th23( 1 )バツ3)
a 3 ( 2 ) = g ( Θ 30 ( 1 ) x 0 + Θ 31 ( 1 ) x 1 + Θ 32 ( 1 ) x 2 + Θ 33 ( 1 ) x 3 ) a_{3}^{(2) }=g(\シータ_{30}^{(1)}{ {x}_{0}}+\シータ_{31}^{(1)}{ {x}_{1}}+\シータ _{ 32}^{(1)}{ {x}_{2}}+\シータ_{33}^{(1)}{ {x}_{3}})ある3( 2 )=g ( Th30( 1 )バツ0+Th31( 1 )バツ1+Th32( 1 )バツ2+Th33( 1 )バツ3)

h Θ ( x ) = a 1 ( 3 ) = g ( Θ 10 ( 2 ) a 0 ( 2 ) + Θ 11 ( 2 ) a 1 ( 2 ) + Θ 12 ( 2 ) a 2 ( 2 ) + Θ 13 ( 2 ) a 3 ( 2 ) ) { {h}_{\Theta }}(x)=a_{1}^{(3)}=g(\Theta _{10}^{(2)}a_{0 }^{(2)}+\シータ _{11}^{(2)}a_{1}^{(2)}+\シータ _{12}^{(2)}a_{2}^{( 2)}+\シータ _{13}^{(2)}a_{3}^{(2)})hTh( × )=ある1( 3 )=g ( Th10( 2 )ある0( 2 )+Th11( 2 )ある1( 2 )+Th12( 2 )ある2( 2 )+Th13( 2 )ある3( 2 ))

ベクトル化された計算

ループを使用してエンコードする場合と比較して、ベクトル化を使用すると計算が簡単になります。上記のニューラル ネットワークを例として、2 番目の層の値を計算してみます

ここに画像の説明を挿入します

z 1 ( 2 ) = Θ 10 ( 1 ) x 0 + Θ 11 ( 1 ) x 1 + Θ 12 ( 1 ) x 2 + Θ 13 ( 1 ) x 3 z_{1}^{(2)}=\シータ _{10}^{(1)}{ {x}_{0}}+\シータ _{11}^{(1)}{ {x}_{1}}+\シータ _{12}^ {(1)}{ {x}_{2}}+\シータ _{13}^{(1)}{ {x}_{3}}z1( 2 )=Th10( 1 )バツ0+Th11( 1 )バツ1+Th12( 1 )バツ2+Th13( 1 )バツ3
類推により、z ( 2 ) = Θ ( 2 ) xz^{(2)}=\Theta ^{(2)}xz( 2 )=Th(2)x
然后就有 a ( 2 ) = g ( z ( 2 ) ) a^{(2)}=g(z^{(2)}) ある( 2 )=g ( z( 2 ) )計算された出力値は次のとおりです:
ここに画像の説明を挿入します
を追加します0 (2) = 1 a_{0}^{\left( 2 \right)}=1ある0( 2 )=1

z ( 3 ) = Θ ( 2 ) a ( 2 ) { {z}^{\left( 3 \right)}}={ {\Theta }^{\left( 2 \right)}}{ { a} ^{\left( 2 \right)}}z( 3 )=Th( 2 ) _( 2 ),则h θ ( x ) = a ( 3 ) = g ( z ( 3 ) ) h_\theta(x)={ { a}^{\left( 3 \right)}}=g({ { z}^{\left( 3 \right)}})h( × )=ある( 3 )=g ( z( 3 ) )上記のh θ ( x ) h_\theta(x)
ここに画像の説明を挿入します
を計算します。h( x )のプロセスは順伝播とも呼ばれます。

ニューロン ネットワークがどのように機能するかをよりよく理解するために、まず左半分を説明します。
ここに画像の説明を挿入します

右半部分其实就是以 a 0 , a 1 , a 2 , a 3 a_0, a_1, a_2, a_3 ある0ある1ある2ある3、ロジスティック回帰法に従ってh θ ( x ) h_\theta(x)を出力します。h( × )

実際、ニューラル ネットワークはロジスティック回帰に似ていますが、ロジスティック回帰で入力ベクトルを取得する点が異なります[x 1 〜 x 3] \left[ x_1\sim {x_3} \right][ ×1バツ3]が中間層[ a 1 ( 2 ) 〜 a 3 ( 2 ) ] \left[ a_1^{(2)}\sim a_3^{(2)} \right] になります。[ _1( 2 )ある3( 2 )]、つまり:h θ ( x ) = g ( Θ 0 ( 2 ) a 0 ( 2 ) + Θ 1 ( 2 ) a 1 ( 2 ) + Θ 2 ( 2 ) a 2 ( 2 ) + Θ 3 ( 2 ) a 3 ( 2 ) ) h_\theta(x)=g\left( \Theta_0^{\left( 2 \right)}a_0^{\left( 2 \right)}+\Theta_1^{\left( 2 \ right)}a_1^{\left( 2 \right)}+\Theta_{2}^{\left( 2 \right)}a_{2}^{\left( 2 \right)}+\Theta_{3} ^{\left( 2 \right)}a_{3}^{\left( 2 \right)} \right)h( × )=g( TH0( 2 )ある0( 2 )+Th1( 2 )ある1( 2 )+Th2( 2 )ある2( 2 )+Th3( 2 )ある3( 2 ))

我们可以把 a 0 , a 1 , a 2 , a 3 a_0, a_1, a_2, a_3 ある0ある1ある2ある3より高度な固有値として考慮されます。つまり、x 0 、 x 1 、 x 2 、 x 3 x_0、 x_1、 x_2、 x_3バツ0バツ1バツ2バツ3の進化体であり、xxで構成されています。xθ \theta勾配降下法であるため、 θによって決定され、 aaaは変化し、ますます強力になっているため、これらのより高度な機能値は単にxxx乗は強力で、新しいデータをより正確に予測できます。これは、ロジスティック回帰や線形回帰に対するニューラル ネットワークの利点です。

基本的に、ニューラル ネットワークは独自の一連の特性を学習できます。通常のロジスティック回帰では、データの元の特徴x 1 、 x 2 、...、 xn x_1,x_2,...,{ { x}_{n}}の使用に制限されます。 バツ1バツ2... バツいくつかの二項項を使用してこれらの特徴を組み合わせることができますが、依然としてこれらの元の特徴によって制限されます。ニューラル ネットワークでは、元の特徴は入力層のみです。上記の 3 層ニューラル ネットワークの例では、出力層である 3 番目の層によって行われる予測には、元の特徴ではなく 2 層の特徴が使用されます。 2 番目の層の特徴は、出力変数の予測を学習した後にニューラル ネットワーク自体によって導出される一連の新しい特徴として考えることができます。

例えば

以下は、ニューラル ネットワークが複雑な非線形仮説モデルを計算する方法を示す例です。
シンプルに始めましょう。ニューラル ネットワークでは、ニューロンの単一層 (中間層なし) の計算を使用して、論理 AND ( AND )、論理 OR ( OR )、論理 NOT ( NOT ) などの論理演算を表すことができます。

1. 論理積 (AND)
以下の図の左半分はニューラル ネットワークの設計と出力層の表現で、右側はsigmod関数です
。このようなニューラル ネットワークを使用してAND関数を
ここに画像の説明を挿入します
表すことができます。 +1 ユニットとしても知られるバイアス ユニットは
重みを割り当てます: θ 0 = − 30 、 θ 1 = 20 、 θ 2 = 20 \theta_0 = -30、 \theta_1 = 20、 \theta_2 = 200=30 1=20 2=20
出力関数h θ ( x ) h_\theta(x)h( x )即ち:h Θ ( x ) = g ( − 30 + 20 x 1 + 20 x 2 ) h_\Theta(x)=g\left( -30+20x_1+20x_2 \right)hTh( × )=g( 30+20 ×1+20 ×2)
g ( x ) g(x)g ( x )のグラフは次のとおりです:
ここに画像の説明を挿入します
真理値表は
ここに画像の説明を挿入します
次のとおりです:h Θ ( x ) ≈ x 1 AND x 2 h_\Theta(x) \about \text{x}_1 \text{AND} \ 、\text{x}_2hTh( × )バツ1そしてバツ2
これがAND関数です。

2. 論理和(OR)

以下の図のニューロン (3 つの重みはそれぞれ -10、20、および 20) は論理 OR ( OR )と同等であるとみなすことができます。
ここに画像の説明を挿入します
OR は全体として AND と同じであり、唯一の違いは値が異なることです。の。

3. 論理否定 (NOT)

以下の図のニューロン (2 つの重みはそれぞれ 10 と -20) は、論理否定 ( NOT )と同等とみなすことができます。
ここに画像の説明を挿入します
ニューロンを使用して、より複雑なニューラル ネットワークを結合し、より複雑な演算を実現できます。たとえば、XNOR関数 (2 つの入力値は同じ、両方 1 または両方 0 である必要があります)、つまりXNOR = ( x 1 AND x 2 ) OR ( ( NOT x 1 ) AND ( NOT x 2 ) ) \text {XNOR}=( \text{x}_1\, \text{AND}\, \text{x}_2 )\, \text{OR} \left( \left( \text{ NOT}\, \text{ x}_1 \right) \text{AND} \left( \text{NOT}\, \text{x}_2 \right) \right)XNOR=( ×1そしてバツ2)または( (ではありませんバツ1)そして(そうではありませんバツ2) )

まず、 ( NOT x 1 ) AND ( NOT x 2 ) \left( \text{NOT}\, \text{x}_1 \right) \text{AND} \left( \text{NOT} を表現できる式を構築します\, \text{x}_2 \right)(そうではありませんバツ1)そして(そうではありませんバツ2)ニューロンの一部:
ここに画像の説明を挿入します
次に、次の 3 つの別々の部分をネットワークに結合します。XNOR
ここに画像の説明を挿入します
ここに画像の説明を挿入します
演算子の機能を実装できるニューラル ネットワークが得られます。
この方法によれば、より複雑な関数を徐々に構築し、より強力な固有値を取得できます。
これがニューラルネットワークの力です。

以上がニューラルネットワークに関する基礎知識です。この記事は、Andrew Ng の機械学習を勉強中に記録したメモです。ご質問があれば、お気軽にお尋ねください。

おすすめ

転載: blog.csdn.net/Luo_LA/article/details/127677001