Artificial-neural-network-quick-guide
人工ニューラルネットワーク-基本概念
ニューラルネットワークは並列コンピューティングデバイスであり、基本的には脳のコンピューターモデルを作成する試みです。 主な目的は、従来のシステムよりも高速にさまざまな計算タスクを実行するシステムを開発することです。 これらのタスクには、パターン認識と分類、近似、最適化、データクラスタリングが含まれます。
人工ニューラルネットワークとは
人工ニューラルネットワーク(ANN)は、その中心テーマが生物学的ニューラルネットワークの類推から借用された効率的なコンピューティングシステムです。 ANNは、「人工神経システム」または「並列分散処理システム」または「コネクショニストシステム」とも呼ばれます。ANNは、ユニット間の通信を可能にするために何らかのパターンで相互接続されたユニットの大規模なコレクションを取得します。 ノードまたはニューロンとも呼ばれるこれらのユニットは、並列で動作する単純なプロセッサです。
すべてのニューロンは、接続リンクを介して他のニューロンと接続されています。 各接続リンクは、入力信号に関する情報を持つ重みに関連付けられています。 これは、ニューロンが特定の問題を解決するための最も有用な情報です。これは、通常、伝達される信号が重みによって興奮または抑制されるためです。 各ニューロンには、活性化信号と呼ばれる内部状態があります。 入力信号とアクティベーションルールを組み合わせた後に生成される出力信号は、他のユニットに送信できます。
ANNの簡単な歴史
ANNの歴史は、次の3つの時代に分けることができます-
1940年代から1960年代のANN
この時代のいくつかの主要な開発は次のとおりです-
- 1943 -神経ネットワークの概念は、生理学者のウォーレン・マカロックと数学者のウォルター・ピッツの研究から始まったと考えられていました。脳が機能する可能性があります。
- 1949 -ドナルド・ヘッブの本「The Organization of Behavior」は、あるニューロンが別のニューロンによって繰り返し活性化されると、使用されるたびにその強度が増加するという事実を発表しました。
- 1956 -連想メモリネットワークがTaylorによって導入されました。
- 1958 -パーセプトロンという名前のマカロックおよびピッツニューロンモデルの学習方法は、Rosenblattによって発明されました。
- 1960 -バーナード・ウィドローとマルシアン・ホフは「ADALINE」と「MADALINE」と呼ばれるモデルを開発しました。
1960年代から1980年代のANN
この時代のいくつかの主要な開発は次のとおりです-
- 1961 -Rosenblattは失敗しましたが、多層ネットワークの「逆伝播」スキームを提案しました。
- 1964 -テイラーは、出力ユニット間で抑制を伴う勝者テイクオール回路を構築しました。
- 1969 -多層パーセプトロン(MLP)はMinskyとPapertによって発明されました。
- 1971 -コホネンは連想記憶を開発しました。
- 1976 -Stephen GrossbergとGail Carpenterは適応共鳴理論を開発しました。
1980年代から現在までのANN
この時代のいくつかの主要な開発は次のとおりです-
- 1982 -主な開発は、ホップフィールドのエネルギーアプローチでした。
- 1985 -ボルツマンマシンは、Ackley、Hinton、およびSejnowskiによって開発されました。
- 1986 -ルーメルハート、ヒントン、およびウィリアムズは、一般化デルタルールを導入しました。
- 1988 -KoskoはBinary Associative Memory(BAM)を開発し、ANNでファジーロジックの概念も提供しました。
歴史的レビューは、この分野で大きな進歩があったことを示しています。 ニューラルネットワークベースのチップが登場し、複雑な問題へのアプリケーションが開発されています。 確かに、今日はニューラルネットワークテクノロジーの移行期です。
生体ニューロン
神経細胞(ニューロン)は、情報を処理する特別な生体細胞です。 推定によれば、膨大な数のニューロンがあり、約10 ^ 11 ^個の相互接続があり、約10 ^ 15 ^個あります。
回路図
生物学的ニューロンの働き
上記の図に示されているように、典型的なニューロンは次の4つの部分で構成されており、その助けを借りてその動作を説明できます-
- 樹状突起-それらは木のような枝であり、接続されている他のニューロンから情報を受け取る役割を果たします。 他の意味では、それらはニューロンの耳のようなものであると言えます。
- Soma -ニューロンの細胞体であり、樹状突起から受け取った情報の処理を担当します。
- 軸索-ニューロンが情報を送信するケーブルのようなものです。
- シナプス-それは、軸索と他のニューロンの樹状突起との間の接続です。
ANNとBNN
人工ニューラルネットワーク(ANN)と生物学的ニューラルネットワーク(BNN)の違いを見る前に、これら2つの用語に基づいた類似点を見てみましょう。
Biological Neural Network (BNN) | Artificial Neural Network (ANN) |
---|---|
Soma | Node |
Dendrites | Input |
Synapse | Weights or Interconnections |
Axon | Output |
次の表は、言及されているいくつかの基準に基づいたANNとBNNの比較を示しています。
Criteria | BNN | ANN |
---|---|---|
Processing | Massively parallel, slow but superior than ANN | Massively parallel, fast but inferior than BNN |
Size | 1011 neurons and 1015 interconnections | 102 to 104 nodes (mainly depends on the type of application and network designer) |
Learning | They can tolerate ambiguity | Very precise, structured and formatted data is required to tolerate ambiguity |
Fault tolerance | Performance degrades with even partial damage | It is capable of robust performance, hence has the potential to be fault tolerant |
Storage capacity | Stores the information in the synapse | Stores the information in continuous memory locations |
人工ニューラルネットワークのモデル
次の図は、ANNの一般的なモデルとそれに続く処理を表しています。
人工ニューラルネットワークの上記の一般的なモデルでは、ネット入力は次のように計算できます-
y _ \ {in} \:= \:x _ \ {1} .w _ \ {1} \:+ \:x _ \ {2} .w _ \ {2} \:+ \:x _ \ {3}。 w _ \ {3} \:\ dotso \:x _ \ {m} .w _ \ {m}
つまり、ネット入力$ y _ \ {in} \:= \:\ sum_i ^ m \:x _ \ {i} .w _ \ {i} $
ネット入力にアクティベーション関数を適用することにより、出力を計算できます。
Y \:= \:F(y _ \ {in})
出力=関数(正味入力計算)
人工ニューラルネットワーク-ビルディングブロック
ANNの処理は、次の3つのビルディングブロックに依存します-
- ネットワークトポロジー
- 重みまたは学習の調整
- アクティベーション関数
この章では、ANNのこれら3つのビルディングブロックについて詳しく説明します。
ネットワークトポロジー
ネットワークトポロジは、ネットワークとそのノードおよび接続線の配置です。 トポロジによれば、ANNは次の種類に分類できます-
フィードフォワードネットワーク
これは、レイヤー内に処理ユニット/ノードを持つ非リカレントネットワークであり、レイヤー内のすべてのノードは前のレイヤーのノードに接続されます。 接続には異なる重みがあります。 フィードバックループがないため、信号は入力から出力まで一方向にしか流れません。 それは次の2つのタイプに分けることができます-
- 単層フィードフォワードネットワーク-コンセプトは、1つの重み付きレイヤーのみを持つフィードフォワードANNです。 つまり、入力層は出力層に完全に接続されていると言えます。
- マルチレイヤーフィードフォワードネットワーク-コンセプトは、複数の重み付きレイヤーを持つフィードフォワードANNです。 このネットワークには、入力層と出力層の間に1つ以上の層があるため、隠れ層と呼ばれます。
フィードバックネットワーク
名前が示すように、フィードバックネットワークにはフィードバックパスがあります。つまり、信号はループを使用して両方向に流れることができます。 これにより、それは非線形動的システムとなり、平衡状態に達するまで連続的に変化します。 それは次のタイプに分けることができます-
- リカレントネットワーク-閉ループのフィードバックネットワークです。 以下は、2種類のリカレントネットワークです。
- 完全リカレントネットワーク-すべてのノードが他のすべてのノードに接続され、各ノードが入力と出力の両方として機能するため、これは最も単純なニューラルネットワークアーキテクチャです。
- * Jordanネットワーク*-これは、次の図に示すように、出力がフィードバックとして再び入力に送られる閉ループネットワークです。
重みまたは学習の調整
学習は、人工ニューラルネットワークで、指定されたネットワークのニューロン間の接続の重みを変更する方法です。 ANNでの学習は、教師あり学習、教師なし学習、強化学習の3つのカテゴリに分類できます。
教師あり学習
名前が示すように、このタイプの学習は教師の監督の下で行われます。 この学習プロセスは依存しています。
教師あり学習の下でのANNのトレーニング中に、入力ベクトルがネットワークに提示され、出力ベクトルが得られます。 この出力ベクトルは、目的の出力ベクトルと比較されます。 実際の出力と目的の出力ベクトルに差がある場合、エラー信号が生成されます。 このエラー信号に基づいて、実際の出力が目的の出力と一致するまで重みが調整されます。
教師なし学習
名前が示すように、このタイプの学習は教師の監督なしで行われます。 この学習プロセスは独立しています。
教師なし学習下でのANNのトレーニング中に、同様のタイプの入力ベクトルが組み合わされてクラスターが形成されます。 新しい入力パターンが適用されると、ニューラルネットワークは、入力パターンが属するクラスを示す出力応答を提供します。
必要な出力と、それが正しいか間違っているかに関する環境からのフィードバックはありません。 したがって、このタイプの学習では、ネットワーク自体が入力データからパターンと機能を検出し、入力データと出力の関係を検出する必要があります。
強化学習
名前が示すように、このタイプの学習は、批評家の情報に関してネットワークを強化または強化するために使用されます。 この学習プロセスは教師あり学習に似ていますが、情報が非常に少ない場合があります。
強化学習によるネットワークのトレーニング中に、ネットワークは環境からフィードバックを受け取ります。 これにより、教師あり学習に多少似ています。 ただし、ここで得られるフィードバックは有益ではなく評価的です。つまり、教師あり学習のように教師がいないということです。 フィードバックを受け取った後、ネットワークは重みの調整を実行して、将来より良い批評情報を取得します。
アクティベーション関数
正確な出力を得るために、入力に加えられる追加の力または努力として定義される場合があります。 ANNでは、入力にアクティベーション関数を適用して、正確な出力を取得することもできます。 以下は、関心のあるいくつかの活性化機能です-
線形活性化関数
入力編集を行わないため、ID関数とも呼ばれます。 次のように定義できます-
F(x)\:= \:x
シグモイド活性化機能
次の2つのタイプがあります-
- バイナリシグモイド関数-このアクティベーション関数は、0〜1の間で入力編集を実行します。 それは本質的にポジティブです。 常に境界があります。つまり、その出力は0未満で1を超えることはできません。 また、本質的に厳密に増加しているため、より多くの入力が出力になります。 次のように定義できます + F(x)\:= \:sigm(x)\:= \:\ frac \ {1} \ {1 \:+ \:exp(-x)}
- 双極性シグモイド関数-このアクティベーション関数は、-1と1の間で入力編集を実行します。 それは本質的にポジティブまたはネガティブです。 常に境界があります。つまり、出力が-1未満で1を超えることはできません。 また、シグモイド関数のように、本質的に厳密に増加しています。 次のように定義できます + F(x)\:= \:sigm(x)\:= \:\ frac \ {2} \ {1 \:+ \:exp(-x)} \:-\:1 \:= \:\ frac \ {1 \:-\:exp(x)} \ {1 \:+ \:exp(x)}
学習と適応
前に述べたように、ANNは生物学的神経系、つまり 人間の脳は機能します。 人間の脳の最も印象的な特徴は学習することです。したがって、同じ機能がANNによって取得されます。
ANNでの学習とは何ですか?
基本的に、学習とは、環境に変化が生じたときに、それ自体で変化を行い、適応させることを意味します。 ANNは複雑なシステムです。より正確には、ANNは、通過する情報に基づいて内部構造を変更できる複雑な適応システムであると言えます。
どうしてそれが重要ですか?
複雑な適応システムであるANNでの学習は、処理ユニットが環境の変化により入出力動作を変更できることを意味します。 ANNでの学習の重要性は、特定のネットワークが構築されるとき、固定されたアクティベーション関数と入出力ベクトルのために増加します。 ここで、入力/出力の動作を変更するには、重みを調整する必要があります。
分類
同じクラスのサンプル間で共通の特徴を見つけることにより、サンプルのデータを異なるクラスに区別することを学習するプロセスとして定義できます。 たとえば、ANNのトレーニングを実行するには、独自の機能を備えたトレーニングサンプルがあり、テストを実行するには、他の独自の機能を備えたテストサンプルがあります。 分類は教師あり学習の例です。
ニューラルネットワークの学習ルール
ANN学習中に、入力/出力動作を変更するには、重みを調整する必要があることを知っています。 したがって、重みを変更できる方法が必要です。 これらの方法は学習ルールと呼ばれ、単にアルゴリズムまたは方程式です。 以下は、ニューラルネットワークのいくつかの学習ルールです-
ヘビアン学習規則
このルールは、最も古く、最も単純なルールの1つで、1949年にドナルドヘブが著書「行動の組織」で紹介しました。 それは一種のフィードフォワード、教師なし学習です。
基本概念-この規則は、Hebbが書いた提案に基づいています。
「細胞Aの軸索が細胞Bを興奮させるのに十分近く、繰り返しまたは持続的に細胞の発火に関与する場合、一方または両方の細胞で何らかの成長プロセスまたは代謝変化が起こり、Bを発火する細胞の1つとしてのAの効率、増加します。」
上記の仮定から、ニューロンが同時に発火すると2つのニューロン間の接続が強化され、異なる時間に発火すると弱くなる可能性があると結論付けることができます。
数学の公式-ヘブの学習ルールによると、次の式は各時間ステップで接続の重みを増加させます。
\ Delta w _ \ {ji}(t)\:= \:\ alpha x _ \ {i}(t).y _ \ {j}(t)
ここで、$ \ Delta w _ \ {ji}(t)$=接続の重みがタイムステップ t で増加する増分
$ \ alpha $ =正の一定の学習率
$ x _ \ {i}(t)$ =タイムステップ t でのシナプス前ニューロンからの入力値
$ y _ \ {i}(t)$ =同じタイムステップ t でのシナプス前ニューロンの出力
パーセプトロン学習ルール
このルールは、Rosenblattによって導入された線形活性化機能を備えた単層フィードフォワードネットワークの教師あり学習アルゴリズムを修正するエラーです。
基本概念-本質的に監視されているため、誤差を計算するために、望ましい/ターゲットの出力と実際の出力の比較が行われます。 違いが見つかった場合は、接続の重みを変更する必要があります。
- 数学的定式化-その数学的定式化を説明するために、「n」個の有限入力ベクトルx(n)と、その望ましい/ターゲット出力ベクトルt(n)(n = 1からN)があると仮定します。
これで、ネット入力に基づいて前述したように、出力「y」を計算でき、そのネット入力に適用されるアクティベーション関数は次のように表現できます-
y \:= \:f(y _ \ {in})\:= \:\ begin \ {cases} 1、&y _ \ {in} \:> \:\ theta \\ 0、&y _ \ { in} \:\ leqslant \:\ theta \ end \ {cases}
ここで、*θ*はしきい値です。
重量の更新は、次の2つの場合に行うことができます-
ケースI *- *t≠y の場合、
w(new)\:= \:w(old)\:+ \; tx
ケースII *- *t = y の場合、
重量変化なし
デルタ学習ルール(Widrow-Hoffルール)
Bernard WidrowとMarcian Hoffによって導入され、最小平均二乗(LMS)法とも呼ばれ、すべてのトレーニングパターンでエラーを最小化します。 連続的な活性化機能を備えた一種の教師あり学習アルゴリズムです。
基本概念-このルールの基本は、勾配降下アプローチであり、これは永遠に続きます。 デルタルールは、出力単位への正味入力と目標値を最小化するようにシナプスの重みを更新します。
数学の公式-シナプスの重みを更新するには、デルタ規則が
\ Delta w _ \ {i} \:= \:\ alpha \ :. x _ \ {i} .e _ \ {j}
ここで$ \ Delta w _ \ {i} $ = i ^ th ^patternの重量変化。
$ \ alpha $ =正の一定の学習率。
$ x _ \ {i} $ =シナプス前ニューロンからの入力値。
$ e _ \ {j} $ = $(t \:-\:y _ \ {in})$、目的/ターゲット出力と実際の出力の違い$ y _ \ {in} $
上記のデルタ規則は、単一の出力ユニット専用です。
重量の更新は、次の2つの場合に行うことができます-
ケース-I *- *t≠y の場合、
w(new)\:= \:w(old)\:+ \:\ Delta w
ケースII *- *t = y の場合、
重量変化なし
競争学習ルール(勝者がすべてを取る)
これは、出力ノードが互いに競合して入力パターンを表現しようとする教師なしトレーニングに関係しています。 この学習ルールを理解するには、次のように与えられている競争ネットワークを理解する必要があります-
競合ネットワークの基本概念-このネットワークは、出力間のフィードバック接続を備えた単層フィードフォワードネットワークに似ています。 出力間の接続は抑制型であり、点線で示されています。つまり、競合他社は自分自身をサポートしていません。
競争学習ルールの基本概念-前述のように、出力ノード間で競合が発生します。 したがって、主な概念は、トレーニング中に、特定の入力パターンに対して最も高いアクティベーションを持つ出力ユニットが勝者として宣言されるということです。 このルールは、勝者ニューロンのみが更新され、残りのニューロンは変更されないままであるため、Winner-takes-allとも呼ばれます。
数学的定式化-以下は、この学習ルールの数学的定式化のための3つの重要な要素です-
- 勝者になる条件-ニューロン$ y _ \ {k} $が勝者になりたい場合、次の条件があります- + y _ \ {k} \:= \:\ begin \ {cases} 1&if \:v _ \ {k} \:> \:v _ \ {j} \:for \:all \:j、\ :j \:\ neq \:k \\ 0およびそれ以外の場合\ end \ {cases}
つまり、$ y _ \ {k} $などのニューロンが勝ちたい場合、その誘導されたローカルフィールド(加算ユニットの出力)、たとえば$ v _ \ {k} $は、すべての中で最大でなければならないことを意味します。ネットワーク内の他のニューロン。
- 重みの合計の条件-競合学習ルールに対する別の制約は、特定の出力ニューロンへの重みの合計が1になることです。 たとえば、ニューロン k を考慮する場合- + $$ \ displaystyle \ sum \ limits _ \ {j} w _ \ {kj} \:= \:1 \:\:\:\:\:\:\:\:\:for \:all \:k $ $
- 勝者の重みの変化-ニューロンが入力パターンに応答しない場合、そのニューロンでは学習は行われません。 ただし、特定のニューロンが勝った場合、対応する重みは次のように調整されます + \ Delta w _ \ {kj} \:= \:\ begin \ {cases}-\ alpha(x _ \ {j} \:-\:w _ \ {kj})、およびif \:neuron \:k \:wins \\ 0、&if \:neuron \:k \:losses \ end \ {cases}
ここで、$ \ alpha $は学習率です。
これは、重みを調整することで勝者のニューロンを支持していることを明確に示しており、ニューロンの損失がある場合、その重みを再調整する必要はありません。
Outstar学習ルール
Grossbergによって導入されたこのルールは、望ましい出力がわかっているため、教師あり学習に関係しています。 グロスバーグ学習とも呼ばれます。
基本概念-このルールは、レイヤーに配置されたニューロンに適用されます。 これは、 p ニューロンの層の望ましい出力 d を生成するように特別に設計されています。
数式-このルールの重量調整は次のように計算されます
\ Delta w _ \ {j} \:= \:\ alpha \ :( d \:-\:w _ \ {j})
ここで、 d は目的のニューロン出力であり、$ \ alpha $は学習率です。
教師あり学習
名前が示すように、*教師あり学習*は教師の監督の下で行われます。 この学習プロセスは依存しています。 教師あり学習下でのANNのトレーニング中に、入力ベクトルがネットワークに提示され、出力ベクトルが生成されます。 この出力ベクトルは、目的/ターゲットの出力ベクトルと比較されます。 実際の出力と目的/ターゲットの出力ベクトルに差がある場合、エラー信号が生成されます。 このエラー信号に基づいて、実際の出力が目的の出力と一致するまで重みが調整されます。
パーセプトロン
McCulloch and Pittsモデルを使用してFrank Rosenblattによって開発されたパーセプトロンは、人工ニューラルネットワークの基本的な操作単位です。 教師あり学習ルールを採用し、データを2つのクラスに分類できます。
パーセプトロンの動作特性:調整可能な重みとともに任意の数の入力を持つ単一のニューロンで構成されますが、ニューロンの出力はしきい値に応じて1または0です。 また、重みが常に1であるバイアスで構成されます。 次の図は、パーセプトロンの概略図を示しています。
したがって、パーセプトロンには次の3つの基本要素があります-
- リンク-常に重み1のバイアスを含む重みを保持する接続リンクのセットがあります。
- Adder -それぞれの重みで乗算された後に入力を追加します。
- 活性化関数-ニューロンの出力を制限します。 最も基本的なアクティベーション関数は、2つの出力が可能なヘビサイドステップ関数です。 この関数は、入力が正の場合は1を返し、負の入力の場合は0を返します。
トレーニングアルゴリズム
パーセプトロンネットワークは、単一の出力ユニットと複数の出力ユニットに対してトレーニングできます。
単一出力ユニットのトレーニングアルゴリズム
- ステップ1 *-以下を初期化してトレーニングを開始します-
- 重さ
- Bias
- 学習率$ \ alpha $
簡単に計算して簡単にするには、重みとバイアスを0に設定し、学習率を1に設定する必要があります。
- ステップ2 *-停止条件が真でない場合、ステップ3-8を続行します。
ステップ3 *-すべてのトレーニングベクトル *x に対してステップ4-6を続行します。
- ステップ4 *-次のように各入力ユニットをアクティブにします-
x _ \ {i} \:= \:s _ \ {i} \ :( i \:= \:1 \:to \:n)
- ステップ5 *-次の関係でネット入力を取得します-
y _ \ {in} \:= \:b \:+ \:\ displaystyle \ sum \ limits _ \ {i} ^ n x _ \ {i}。\:w _ \ {i}
ここで、「b」はバイアスで、「n」は入力ニューロンの総数です。
- ステップ6 *-次のアクティベーション関数を適用して、最終出力を取得します。
$$ f(y _ \ {in})\:= \:\ begin \ {cases} 1&if \:y _ \ {in} \:> \:\ theta \\ 0&if \:-\ theta \: \ leqslant \:y _ \ {in} \:\ leqslant \:\ theta \\-1&if \:y _ \ {in} \:
- ステップ7 *-次のように重みとバイアスを調整します-
ケース1 *- *y≠t の場合、
w _ \ {i}(new)\:= \:w _ \ {i}(old)\:+ \:\ alpha \:tx _ \ {i}
b(new)\:= \:b(old)\:+ \:\ alpha t
ケース2 *- *y = t の場合、
w _ \ {i}(new)\:= \:w _ \ {i}(old)
b(new)\:= \:b(old)
ここで、 'y' は実際の出力であり、 't' は望ましい/ターゲットの出力です。
- ステップ8 *-重量に変化がない場合に発生する停止条件をテストします。
複数の出力ユニットのトレーニングアルゴリズム
次の図は、複数の出力クラスのパーセプトロンのアーキテクチャです。
- ステップ1 *-以下を初期化してトレーニングを開始します-
- 重さ
- Bias
- 学習率$ \ alpha $
簡単に計算して簡単にするには、重みとバイアスを0に設定し、学習率を1に設定する必要があります。
- ステップ2 *-停止条件が真でない場合、ステップ3-8を続行します。
ステップ3 *-すべてのトレーニングベクトル *x に対してステップ4-6を続行します。
- ステップ4 *-次のように各入力ユニットをアクティブにします-
x _ \ {i} \:= \:s _ \ {i} \ :( i \:= \:1 \:to \:n)
- ステップ5 *-次の関係でネット入力を取得します-
y _ \ {in} \:= \:b \:+ \:\ displaystyle \ sum \ limits _ \ {i} ^ n x _ \ {i} \:w _ \ {ij}
ここで、「b」はバイアスで、「n」は入力ニューロンの総数です。
ステップ6 *-次のアクティベーション関数を適用して、各出力ユニットの最終出力を取得します *j = 1〜m -
$$ f(y _ \ {in})\:= \:\ begin \ {cases} 1&if \:y _ \ {inj} \:> \:\ theta \\ 0&if \:-\ theta \: \ leqslant \:y _ \ {inj} \:\ leqslant \:\ theta \\-1およびif \:y _ \ {inj} \:
ステップ7 *-次のように *x = 1〜n および j = 1〜m の重みとバイアスを調整します-
ケース1 *- y〜j〜≠t〜j〜*の場合、
w _ \ {ij}(new)\:= \:w _ \ {ij}(old)\:+ \:\ alpha \:t _ \ {j} x _ \ {i}
b _ \ {j}(new)\:= \:b _ \ {j}(old)\:+ \:\ alpha t _ \ {j}
ケース2 *- y〜j〜= t〜j〜*の場合、
w _ \ {ij}(new)\:= \:w _ \ {ij}(old)
b _ \ {j}(new)\:= \:b _ \ {j}(old)
ここで、 'y' は実際の出力であり、 't' は望ましい/ターゲットの出力です。
- ステップ8 *-重量に変化がない場合に発生する停止条件をテストします。
適応線形ニューロン(アダリン)
アダラインは、適応線形ニューロンの略で、単一の線形ユニットを持つネットワークです。 1960年にWidrowとHoffによって開発されました。 アダリンに関するいくつかの重要な点は次のとおりです-
- 双極活性化機能を使用します。
- トレーニングにデルタルールを使用して、実際の出力と目的/ターゲット出力の間の平均二乗誤差(MSE)を最小化します。
- 重みとバイアスは調整可能です。
建築
Adalineの基本構造は、実際の出力が目的の/ターゲットの出力と比較される追加のフィードバックループを持つパーセプトロンに似ています。 トレーニングアルゴリズムに基づいて比較した後、重みとバイアスが更新されます。
トレーニングアルゴリズム
- ステップ1 *-以下を初期化してトレーニングを開始します-
- 重さ
- Bias
- 学習率$ \ alpha $
簡単に計算して簡単にするには、重みとバイアスを0に設定し、学習率を1に設定する必要があります。
- ステップ2 *-停止条件が真でない場合、ステップ3-8を続行します。
ステップ3 *-各バイポーラトレーニングペア *s:t についてステップ4-6を続けます。
- ステップ4 *-次のように各入力ユニットをアクティブにします-
x _ \ {i} \:= \:s _ \ {i} \ :( i \:= \:1 \:to \:n)
- ステップ5 *-次の関係でネット入力を取得します-
y _ \ {in} \:= \:b \:+ \:\ displaystyle \ sum \ limits _ \ {i} ^ n x _ \ {i} \:w _ \ {i}
ここで、「b」はバイアスで、「n」は入力ニューロンの総数です。
- ステップ6 *-最終出力を取得するには、次のアクティベーション関数を適用します-
$$ f(y _ \ {in})\:= \:\ begin \ {cases} 1&if \:y _ \ {in} \:\ geqslant \:0 \\-1&if \:y _ \ {in } \:
- ステップ7 *-次のように重みとバイアスを調整します-
ケース1 *- *y≠t の場合、
w _ \ {i}(new)\:= \:w _ \ {i}(old)\:+ \:\ alpha(t \:-\:y _ \ {in})x _ \ {i}
b(new)\:= \:b(old)\:+ \:\ alpha(t \:-\:y _ \ {in})
ケース2 *- *y = t の場合、
w _ \ {i}(new)\:= \:w _ \ {i}(old)
b(new)\:= \:b(old)
ここで、 'y' は実際の出力であり、 't' は望ましい/ターゲットの出力です。
$(t \:-\; y _ \ {in})$は計算されたエラーです。
- ステップ8 *-停止条件のテスト。これは、重量に変化がない場合、またはトレーニング中に発生した最大重量変化が指定された許容値より小さい場合に発生します。
複数の適応線形ニューロン(マダリン)
Madalineは、Multiple Adaptive Linear Neuronの略で、多数のAdalineを並列に接続したネットワークです。 単一の出力ユニットがあります。 マダリンに関するいくつかの重要な点は次のとおりです-
- これは、Adalineが入力とMadalineレイヤーの間の隠れたユニットとして機能する多層パーセプトロンのようなものです。
- Adalineアーキテクチャで見られるように、入力レイヤーとAdalineレイヤー間の重みとバイアスは調整可能です。
- AdalineおよびMadalineレイヤーの重みとバイアスは1に固定されています。
- トレーニングはデルタルールの助けを借りて行うことができます。
建築
Madalineのアーキテクチャは、入力層の "n" ニューロン、Adaline層の "m" ニューロン、およびMadaline層の1つのニューロンで構成されます。 Adalineレイヤーは、入力レイヤーと出力レイヤーの間にあるため、隠しレイヤーと見なすことができます。 Madalineレイヤー。
トレーニングアルゴリズム
ここまでで、入力とAdalineレイヤー間の重みとバイアスのみが調整され、AdalineとMadalineレイヤー間の重みとバイアスは固定されていることがわかりました。
- ステップ1 *-以下を初期化してトレーニングを開始します-
- 重さ
- Bias
- 学習率$ \ alpha $
簡単に計算して簡単にするには、重みとバイアスを0に設定し、学習率を1に設定する必要があります。
- ステップ2 *-停止条件が真でない場合、ステップ3-8を続行します。
ステップ3 *-各バイポーラトレーニングペア *s:t についてステップ4-6を続けます。
- ステップ4 *-次のように各入力ユニットをアクティブにします-
x _ \ {i} \:= \:s _ \ {i} \ :( i \:= \:1 \:to \:n)
- ステップ5 *-各隠れ層でネット入力を取得します。 次の関係を持つAdaline層-
Q _ \ {inj} \:= \:b _ \ {j} \:+ \:\ displaystyle \ sum \ limits _ \ {i} ^ n x _ \ {i} \:w _ \ {ij} \:\: \:j \:= \:1 \:to \:m
ここで、「b」はバイアスで、「n」は入力ニューロンの総数です。
- ステップ6 *-次のアクティベーション関数を適用して、AdalineおよびMadalineレイヤーで最終出力を取得します-
$$ f(x)\:= \:\ begin \ {cases} 1&if \:x \:\ geqslant \:0 \\-1&if \:x \:
非表示(Adaline)ユニットでの出力
Q _ \ {j} \:= \:f(Q _ \ {inj})
ネットワークの最終出力
y \:= \:f(y _ \ {in})
*ie* $ \:\:y _ \ {inj} \:= \:b _ \ {0} \:+ \:\ sum _ \ {j = 1} ^ m \:Q _ \ {j} \:v _ \ { j} $
- ステップ7 *-エラーを計算し、次のように重みを調整します-
ケース1 *- *y≠t かつ t = 1 の場合、
w _ \ {ij}(new)\:= \:w _ \ {ij}(old)\:+ \:\ alpha(1 \:-\:Q _ \ {inj})x _ \ {i}
b _ \ {j}(new)\:= \:b _ \ {j}(old)\:+ \:\ alpha(1 \:-\:Q _ \ {inj})
この場合、 t = 1 であるため、ネット入力が0に近い* Q〜j〜*で重みが更新されます。
ケース2 *- *y≠t かつ t = -1 の場合、
$$ w _ \ {ik}(new)\:= \:w _ \ {ik}(old)\:+ \:\ alpha(-1 \:-\:Q _ \ {ink})x _ \ {i} $ $
b _ \ {k}(new)\:= \:b _ \ {k}(old)\:+ \:\ alpha(-1 \:-\:Q _ \ {ink})
この場合、 t = -1 であるため、ネット入力が正である* Q〜k〜*で重みが更新されます。
ここで、 'y' は実際の出力であり、 't' は望ましい/ターゲットの出力です。
ケース3 *- *y = t の場合
重みに変化はありません。
- ステップ8 *-停止条件のテスト。これは、重量に変化がない場合、またはトレーニング中に発生した最大重量変化が指定された許容値より小さい場合に発生します。
バックプロパゲーションニューラルネットワーク
Back Propagation Neural(BPN)は、入力層、少なくとも1つの隠れ層、および出力層で構成される多層ニューラルネットワークです。 名前が示すように、このネットワークでは逆伝播が行われます。 ターゲット出力と実際の出力を比較することにより、出力層で計算されたエラーは、入力層に向かって伝播されます。
建築
図に示すように、BPNのアーキテクチャには、重みを持つ相互接続された3つの層があります。 隠れ層と出力層にもバイアスがあり、その重みは常に1です。 図から明らかなように、BPNの動作は2つのフェーズに分かれています。 1つのフェーズは入力レイヤーから出力レイヤーに信号を送信し、もう1つのフェーズは出力レイヤーから入力レイヤーにエラーを逆伝播します。
トレーニングアルゴリズム
トレーニングのために、BPNはバイナリシグモイド活性化関数を使用します。 BPNのトレーニングには、次の3つのフェーズがあります。
- *フェーズ1 *-フィードフォワードフェーズ
- *フェーズ2 *-エラーの逆伝播
- *フェーズ3 *-重みの更新
これらすべてのステップは、アルゴリズムで次のように結論付けられます。
- ステップ1 *-以下を初期化してトレーニングを開始します-
- 重さ
- 学習率$ \ alpha $
簡単に計算して簡単にするために、いくつかの小さなランダムな値を取ります。
- ステップ2 *-停止条件が真でない場合、ステップ3-11を続行します。
- ステップ3 *-すべてのトレーニングペアについてステップ4-10を続行します。
フェーズ1
ステップ4 *-各入力ユニットは入力信号 x〜i〜を受信し、すべての *i = 1〜n の隠しユニットに送信します。
- ステップ5 *-次の関係を使用して、隠れユニットでのネット入力を計算します-
Q _ \ {inj} \:= \:b _ \ {0j} \:+ \:\ sum _ \ {i = 1} ^ n x _ \ {i} v _ \ {ij} \:\:\:\: j \:= \:1 \:to \:p
ここで、* b〜0j〜は隠れユニットのバイアス、 v〜ij〜は入力レイヤーの *i ユニットから来る隠れレイヤーの j ユニットの重みです。
次のアクティベーション関数を適用して、ネット出力を計算します
Q _ \ {j} \:= \:f(Q _ \ {inj})
隠れ層ユニットのこれらの出力信号を出力層ユニットに送信します。
- ステップ6 *-次の関係を使用して、出力層ユニットでのネット入力を計算します-
y _ \ {ink} \:= \:b _ \ {0k} \:+ \:\ sum _ \ {j = 1} ^ p \:Q _ \ {j} \:w _ \ {jk} \:\: k \:= \:1 \:to \:m
ここで、* b〜0k〜は出力ユニットのバイアスであり、 w〜jk〜は、隠れ層の *j ユニットから来る出力層の k ユニットの重みです。
次のアクティベーション関数を適用して、ネット出力を計算します
y _ \ {k} \:= \:f(y _ \ {ink})
フェーズ2
- ステップ7 *-各出力ユニットで受信したターゲットパターンに対応して、次のようにエラー修正項を計算します-
\ delta _ \ {k} \:= \ :( t _ \ {k} \:-\:y _ \ {k})f ^ \ {'}(y _ \ {ink})
これに基づいて、次のように重みとバイアスを更新します-
\ Delta v _ \ {jk} \:= \:\ alpha \ delta _ \ {k} \:Q _ \ {ij}
\ Delta b _ \ {0k} \:= \:\ alpha \ delta _ \ {k}
次に、$ \ delta _ \ {k} $を隠しレイヤーに送り返します。
- ステップ8 *-各非表示ユニットは、出力ユニットからのデルタ入力の合計になります。
\ delta _ \ {inj} \:= \:\ displaystyle \ sum \ limits _ \ {k = 1} ^ m \ delta _ \ {k} \:w _ \ {jk}
エラー項は次のように計算することができます-
\ delta _ \ {j} \:= \:\ delta _ \ {inj} f ^ \ {'}(Q _ \ {inj})
これに基づいて、次のように重みとバイアスを更新します-
\ Delta w _ \ {ij} \:= \:\ alpha \ delta _ \ {j} x _ \ {i}
\ Delta b _ \ {0j} \:= \:\ alpha \ delta _ \ {j}
フェーズ3
ステップ9 *-各出力単位 *(y〜k〜k = 1〜m) は、次のように重みとバイアスを更新します-
v _ \ {jk}(新規)\:= \:v _ \ {jk}(old)\:+ \:\ Delta v _ \ {jk}
b _ \ {0k}(新規)\:= \:b _ \ {0k}(old)\:+ \:\ Delta b _ \ {0k}
ステップ10 *-各出力ユニット *(z〜j〜j = 1 to p) は、次のように重みとバイアスを更新します-
w _ \ {ij}(new)\:= \:w _ \ {ij}(old)\:+ \:\ Delta w _ \ {ij}
b _ \ {0j}(新規)\:= \:b _ \ {0j}(old)\:+ \:\ Delta b _ \ {0j}
- ステップ11 *-停止条件を確認します。停止条件は、エポック数に達しているか、ターゲット出力が実際の出力と一致する可能性があります。
一般化されたデルタ学習ルール
デルタルールは、出力レイヤーに対してのみ機能します。 一方、 back-propagation ルールとも呼ばれる一般化されたデルタルールは、非表示レイヤーの目的の値を作成する方法です。
数学的定式化
アクティベーション関数$ y _ \ {k} \:= \:f(y _ \ {ink})$の場合、非表示層と出力層のネット入力の導出は次のようになります。
y _ \ {ink} \:= \:\ displaystyle \ sum \ limits_i \:z _ \ {i} w _ \ {jk}
そして、$ \:\:y _ \ {inj} \:= \:\ sum_i x _ \ {i} v _ \ {ij} $
今最小化する必要があるエラーは
$$ E \:= \:\ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {k} \:[t _ \ {k} \:-\:y _ \ {k}] ^ 2 $ $
チェーンルールを使用することにより、
\ frac \ {\ partial E} \ {\ partial w _ \ {jk}} \:= \:\ frac \ {\ partial} \ {\ partial w _ \ {jk}}(\ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {k} \:[t _ \ {k} \:-\:y _ \ {k}] ^ 2)
= \:\ frac \ {\ partial} \ {\ partial w _ \ {jk}} \ lgroup \ frac \ {1} \ {2} [t _ \ {k} \:-\:t(y _ \ {インク})] ^ 2 \ rgroup
= \:-[t _ \ {k} \:-\:y _ \ {k}] \ frac \ {\ partial} \ {\ partial w _ \ {jk}} f(y _ \ {ink})
= \:-[t _ \ {k} \:-\:y _ \ {k}] f(y _ \ {ink})\ frac \ {\ partial} \ {\ partial w _ \ {jk}}(y_ \ {ink})
= \:-[t _ \ {k} \:-\:y _ \ {k}] f ^ \ {'}(y _ \ {ink})z _ \ {j}
$ \ delta _ \ {k} \:= \:-[t _ \ {k} \:-\:y _ \ {k}] f ^ \ {'}(y _ \ {ink})$
隠しユニット* z〜j〜*への接続の重みは、次のように指定できます-
\ frac \ {\ partial E} \ {\ partial v _ \ {ij}} \:= \:-\ displaystyle \ sum \ limits _ \ {k} \ delta _ \ {k} \ frac \ {\ partial} \ {\ partial v _ \ {ij}} \ :( y _ \ {ink})
$ y _ \ {ink} $の値を入れると、次のようになります
\ delta _ \ {j} \:= \:-\ displaystyle \ sum \ limits _ \ {k} \ delta _ \ {k} w _ \ {jk} f ^ \ {'}(z _ \ {inj})
重みの更新は次のように行うことができます-
出力ユニットの場合-
\ Delta w _ \ {jk} \:= \:-\ alpha \ frac \ {\ partial E} \ {\ partial w _ \ {jk}}
= \:\ alpha \:\ delta _ \ {k} \:z _ \ {j}
隠されたユニットのために-
\ Delta v _ \ {ij} \:= \:-\ alpha \ frac \ {\ partial E} \ {\ partial v _ \ {ij}}
= \:\ alpha \:\ delta _ \ {j} \:x _ \ {i}
教師なし学習
名前が示すように、このタイプの学習は教師の監督なしで行われます。 この学習プロセスは独立しています。 教師なし学習下でのANNのトレーニング中に、同様のタイプの入力ベクトルが組み合わされてクラスターが形成されます。 新しい入力パターンが適用されると、ニューラルネットワークは、入力パターンが属するクラスを示す出力応答を提供します。 この場合、目的の出力と、それが正しいか正しくないかについて、環境からのフィードバックはありません。 したがって、このタイプの学習では、ネットワーク自体が、入力データからパターン、特徴、および出力に対する入力データの関係を発見する必要があります。
Winner-Takes-All Networks
これらの種類のネットワークは競合学習ルールに基づいており、総入力が最大のニューロンを勝者として選択する戦略を使用します。 出力ニューロン間の接続は、それらの間の競合を示し、そのうちの1つは「オン」になり、それが勝者になり、他のニューロンは「オフ」になります。
以下は、教師なし学習を使用したこの単純な概念に基づいたネットワークの一部です。
ハミングネットワーク
教師なし学習を使用するほとんどのニューラルネットワークでは、距離を計算して比較を実行することが不可欠です。 この種のネットワークはハミングネットワークであり、与えられたすべての入力ベクトルに対して、異なるグループにクラスター化されます。 以下は、ハミングネットワークのいくつかの重要な機能です-
- リップマンは、1987年にハミングネットワークの開発を開始しました。
- これは単層ネットワークです。
- 入力は、バイポーラ\ {-1、1}のバイナリ\ {0、1}のいずれかです。
- ネットの重みは、模範ベクトルによって計算されます。
- これは固定重みネットワークであるため、トレーニング中も重みは同じままです。
マックスネット
これは固定ウェイトネットワークでもあり、入力が最大のノードを選択するためのサブネットとして機能します。 すべてのノードは完全に相互接続されており、これらすべての重み付き相互接続には対称的な重みが存在します。
建築
反復プロセスであるメカニズムを使用し、各ノードは接続を介して他のすべてのノードから抑制入力を受け取ります。 値が最大の単一ノードはアクティブまたは勝者になり、他のすべてのノードのアクティブ化は非アクティブになります。 Max Netは、$$ f(x)\:= \:\ begin \ {cases} x&if \:x> 0 \\ 0&if \:x \ leq 0 \ end \ {cases} $でIDアクティベーション関数を使用します$
このネットのタスクは、+ 1の自励重みと相互抑制の大きさによって達成されます。これは、[0 <ɛ<$ \ frac \ {1} \ {m} $]のように設定されます。ノードの総数。
ANNでの競争学習
これは、出力ノードが互いに競合して入力パターンを表現しようとする教師なしトレーニングに関係しています。 この学習ルールを理解するには、次のように説明されている競争ネットを理解する必要があります-
競争ネットワークの基本概念
このネットワークは、出力間にフィードバック接続を持つ単一層のフィードフォワードネットワークに似ています。 出力間の接続は抑制タイプであり、これは点線で示されています。つまり、競合他社は自分自身をサポートしません。
競争学習ルールの基本概念
前に述べたように、出力ノード間で競合が発生するため、主な概念は次のとおりです。トレーニング中、特定の入力パターンに対して最も高い活性化を持つ出力ユニットが勝者として宣言されます。 このルールは、勝者ニューロンのみが更新され、残りのニューロンは変更されないままであるため、Winner-takes-allとも呼ばれます。
数学的定式化
以下は、この学習ルールの数学的定式化のための3つの重要な要因です-
- 勝者になるための条件 ニューロン *_y〜k〜_* が勝者になりたい場合、次の条件があると仮定します y _ \ {k} \:= \:\ begin \ {cases} 1&if \:v_ \ {k}> v _ \ {j} \:for \:all \:\:j、\:j \:\ neq \:k \\ 0およびそれ以外の場合\ end \ {cases} +たとえば、* y〜k〜が勝ちたいニューロンは、その誘導されたローカルフィールド(加算ユニットの出力)、たとえば v〜k〜*は、ネットワーク内の他のすべてのニューロンの中で最大でなければなりません。
- 重量の合計の条件 競合学習ルールに対する別の制約は、特定の出力ニューロンへの重みの合計が1になることです。 たとえば、ニューロン *k* を考慮した場合、 \ displaystyle \ sum \ limits _ \ {k} w _ \ {kj} \:= \:1 \:\:\:\:for \:all \:\ :k
- 勝者の体重の変化 ニューロンが入力パターンに応答しない場合、そのニューロンでは学習は行われません。 ただし、特定のニューロンが勝った場合、対応する重みは次のように調整されます- \ Delta w _ \ {kj} \:= \:\ begin \ {cases}-\ alpha(x _ \ {j} \:- \:w _ \ {kj})、&if \:neuron \:k \:wins \\ 0&if \:neuron \:k \:losses \ end \ {cases} +ここで$ \ alpha $は学習率。 +これは、重みを調整することで勝者のニューロンを支持し、ニューロンが失われた場合、その重みを再調整する必要がないことを明確に示しています。
K平均クラスタリングアルゴリズム
K-meansは、パーティションプロシージャの概念を使用する最も一般的なクラスタリングアルゴリズムの1つです。 最初のパーティションから始めて、満足のいく結果が得られるまで、あるクラスターから別のクラスターにパターンを繰り返し移動します。
アルゴリズム
ステップ1 *-初期重心として *k ポイントを選択します。 k プロトタイプ*(w〜1〜、…、w〜k〜)*を初期化します。たとえば、ランダムに選択された入力ベクトルでそれらを識別することができます-
W _ \ {j} \:= \:i _ \ {p}、\:\:\:where \:j \:\ in \ lbrace1、....、k \ rbrace \:and \:p \ :\ in \ lbrace1、....、n \ rbrace
各クラスター* C〜j〜は、プロトタイプ w〜j〜*に関連付けられています。
- ステップ2 *-Eが減少しなくなるか、クラスターメンバーシップが変更されなくなるまで、ステップ3-5を繰り返します。
ステップ3 *-各入力ベクトル i〜p〜について、 *p∈\ {1、…、n} で、クラスターに* i〜p〜を置きます *C〜j 〜を最も近いプロトタイプで *w〜j 〜*は次の関係を持ちます
| i _ \ {p} \:-\:w _ \ {j *} | \:\ leq \:| i _ \ {p} \:-\:w _ \ {j} |、\:j \:\ \ lbrace1、....、k \ rbrace
ステップ4 *-各クラスター C〜j〜で、 *j∈\ {1、…、k} で、現在* C〜にあるすべてのサンプルの重心になるようにプロトタイプ* w〜j〜を更新しますj〜、そのため
$$ w _ \ {j} \:= \:\ sum _ \ {i _ \ {p} \ in C _ \ {j}} \ frac \ {i _ \ {p}} \ {| C _ \ {j} |} $ $
- ステップ5 *-次のように合計量子化誤差を計算します-
E \:= \:\ sum _ \ {j = 1} ^ k \ sum _ \ {i _ \ {p} \ in w _ \ {j}} | i _ \ {p} \:-\:w _ \ {j } | ^ 2
ネオコグニトロン
これは、1980年代に福島が開発した多層フィードフォワードネットワークです。 このモデルは教師あり学習に基づいており、主に手書き文字の視覚パターン認識に使用されます。 これは基本的に、1975年に福島によって開発されたコグニトロンネットワークの拡張です。
建築
これは階層ネットワークであり、多くの層で構成され、それらの層にはローカルに接続のパターンがあります。
上の図で見たように、ネオコグニトロンは異なる接続層に分割され、各層には2つのセルがあります。 これらのセルの説明は次のとおりです-
*S-Cell* -特定のパターンまたはパターンのグループに応答するようにトレーニングされた単純なセルと呼ばれます。
*C-Cell* -これは複雑なセルと呼ばれ、Sセルからの出力を結合し、同時に各配列のユニット数を減らします。 別の意味では、CセルはSセルの結果を置き換えます。
トレーニングアルゴリズム
ネオコグニトロンのトレーニングは、レイヤーごとに進行することがわかりました。 入力層から最初の層までの重みが訓練され、凍結されます。 次に、第1層から第2層への重みがトレーニングされます。 SセルとCセル間の内部計算は、前のレイヤーからの重みに依存します。 したがって、トレーニングアルゴリズムはSセルとCセルの計算に依存していると言えます。
Sセルでの計算
S細胞は、前の層から受信した興奮性信号を持ち、同じ層内で得られた抑制信号を持っています。
\ theta = \:\ sqrt \ {\ sum \ sum t _ \ {i} c _ \ {i} ^ 2}
ここで、* t〜i〜は固定重量で、 c〜i〜*はCセルからの出力です。
Sセルのスケーリングされた入力は次のように計算することができます-
x \:= \:\ frac \ {1 \:+ \:e} \ {1 \:+ \:vw _ \ {0}} \:-\:1
ここで、$ e \:= \:\ sum_i c _ \ {i} w _ \ {i} $
w〜i〜*は、CセルからSセルに調整された重みです。
w〜0〜*は、入力とSセル間で調整可能な重みです。
*v* は、Cセルからの興奮性入力です。
出力信号のアクティブ化は、
s \:= \:\ begin \ {cases} x、&if \:x \ geq 0 \\ 0、&if \:x <0 \ end \ {cases}
Cセルでの計算
C層の正味入力は
C \:= \:\ displaystyle \ sum \ limits_i s _ \ {i} x _ \ {i}
ここで、* s〜i〜はSセルからの出力であり、 x〜i〜*はSセルからCセルへの固定重みです。
最終的な出力は次のとおりです-
C _ \ {out} \:= \:\ begin \ {cases} \ frac \ {C} \ {a + C}、およびif \:C> 0 \\ 0、およびそれ以外の場合\ end \ {cases}
ここで、「a」*はネットワークのパフォーマンスに依存するパラメーターです。
学習ベクトル量子化
学習ベクトル量子化(LVQ)は、ベクトル量子化(VQ)やコホーネン自己組織化マップ(KSOM)とは異なり、基本的には教師あり学習を使用する競争力のあるネットワークです。 各出力ユニットがクラスを表すパターンを分類するプロセスとして定義できます。 教師あり学習を使用するため、ネットワークには、出力クラスの初期分布とともに、既知の分類を持つ一連のトレーニングパターンが与えられます。 トレーニングプロセスの完了後、LVQは入力ユニットを出力ユニットと同じクラスに割り当てることにより、入力ベクトルを分類します。
建築
次の図は、KSOMのアーキテクチャに非常によく似たLVQのアーキテクチャを示しています。 ご覧のとおり、入力ユニットの数は「n」*、出力ユニットの数は「m」です。 レイヤーは、ウェイトを使用して完全に相互接続されています。
使用されるパラメーター
以下は、LVQトレーニングプロセスとフローチャートで使用されるパラメーターです。
- x =トレーニングベクトル(x〜1〜、…、x〜i〜、…、x〜n〜)
- T =トレーニングベクトルのクラス x
- * w〜j〜 = j ^ th ^ *出力単位の重みベクトル
- * C〜j〜 = j ^ th ^ *出力ユニットに関連付けられたクラス
トレーニングアルゴリズム
- ステップ1 *-参照ベクトルを初期化します。これは次のように実行できます-
- ステップ1(a)-与えられたトレーニングベクトルのセットから、最初の「 m 」(クラスターの数)トレーニングベクトルを取得し、それらを重みベクトルとして使用します。 残りのベクトルは、トレーニングに使用できます。
- ステップ1(b)-初期重みと分類をランダムに割り当てます。
- ステップ1(c)-K平均法を適用します。
- ステップ2 *-参照ベクトル$ \ alpha $を初期化する
- ステップ3 *-このアルゴリズムを停止するための条件が満たされない場合、ステップ4〜9に進みます。
ステップ4 *-すべてのトレーニング入力ベクトル *x についてステップ5〜6を実行します。
ステップ5 *- *j = 1からm および i = 1からn のユークリッド距離の平方を計算する
D(j)\:= \:\ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ displaystyle \ sum \ limits _ \ {j = 1} ^ m(x _ \ {i} \:-\: w _ \ {ij})^ 2
ステップ6 *-勝利ユニット *J を取得します(* D(j)*は最小です)。
- ステップ7 *-次の関係により、勝利ユニットの新しい重量を計算します-
- T = C〜j〜*の場合、$ w _ \ {j}(new)\:= \:w _ \ {j}(old)\:+ \:\ alpha [x \:-\:w _ \ {j }(old)] $
- T≠C〜j〜*の場合、$ w _ \ {j}(new)\:= \:w _ \ {j}(old)\:-\:\ alpha [x \:-\:w _ \ {j }(old)] $
- ステップ8 *-学習率$ \ alpha $を下げます。
- ステップ9 *-停止条件をテストします。 次のようになります-
- エポックの最大数に達しました。
- 学習率はごくわずかな値に減少しました。
フローチャート
バリアント
他の3つのバリアント、すなわちLVQ2、LVQ2.1およびLVQ3がKohonenによって開発されました。 これら3つのバリアントすべての複雑さは、勝者と次点ユニットが学習するという概念のため、LVQよりも複雑です。
LVQ2
前述のように、上記のLVQの他のバリアントの概念、LVQ2の状態はウィンドウによって形成されます。 このウィンドウは、次のパラメータに基づいています-
- x -現在の入力ベクトル
- * y〜c〜- *x に最も近い参照ベクトル
- * y〜r〜- *x に次に近い他の参照ベクトル
- * d〜c〜- *x から* y〜c〜*までの距離
- * d〜r〜- *x から* y〜r〜*までの距離
入力ベクトル x は、次の場合にウィンドウに収まります。
\ frac \ {d _ \ {c}} \ {d _ \ {r}} \:> \:1 \:-\:\ theta \:\:and \:\:\ frac \ {d _ \ {r }} \ {d _ \ {c}} \:> \:1 \:+ \:\ theta
ここで、$ \ theta $はトレーニングサンプルの数です。
更新は、次の式で行うことができます-
$ y _ \ {c}(t \:+ \:1)\:= \:y _ \ {c}(t)\:+ \:\ alpha(t)[x(t)\:-\:y_ \ {c}(t)] $ *(異なるクラスに属する) *
$ y _ \ {r}(t \:+ \:1)\:= \:y _ \ {r}(t)\:+ \:\ alpha(t)[x(t)\:-\:y_ \ {r}(t)] $* (同じクラスに属する)*
ここで、$ \ alpha $は学習率です。
LVQ2.1
LVQ2.1では、2つの最も近いベクトル、すなわち* y〜c1〜および y〜c2〜*を取ります。ウィンドウの条件は次のとおりです-
Min \ begin \ {bmatrix} \ frac \ {d _ \ {c1}} \ {d _ \ {c2}}、\ frac \ {d _ \ {c2}} \ {d _ \ {c1}} \ end \ { bmatrix} \:> \ :( 1 \:-\:\ theta)
$$ Max \ begin \ {bmatrix} \ frac \ {d _ \ {c1}} \ {d _ \ {c2}}、\ frac \ {d _ \ {c2}} \ {d _ \ {c1}} \ end \ { bmatrix} \:
更新は、次の式で行うことができます-
$ y _ \ {c1}(t \:+ \:1)\:= \:y _ \ {c1}(t)\:+ \:\ alpha(t)[x(t)\:-\:y_ \ {c1}(t)] $ *(異なるクラスに属する) *
$ y _ \ {c2}(t \:+ \:1)\:= \:y _ \ {c2}(t)\:+ \:\ alpha(t)[x(t)\:-\:y_ \ {c2}(t)] $* (同じクラスに属する)*
ここで、$ \ alpha $は学習率です。
LVQ3
LVQ3では、2つの最も近いベクトル、すなわち* y〜c1〜および y〜c2〜*を取ります。ウィンドウの条件は次のとおりです-
Min \ begin \ {bmatrix} \ frac \ {d _ \ {c1}} \ {d _ \ {c2}}、\ frac \ {d _ \ {c2}} \ {d _ \ {c1}} \ end \ { bmatrix} \:> \ :( 1 \:-\:\ theta)(1 \:+ \:\ theta)
ここで$ \ theta \ approx 0.2 $
更新は、次の式で行うことができます-
$ y _ \ {c1}(t \:+ \:1)\:= \:y _ \ {c1}(t)\:+ \:\ beta(t)[x(t)\:-\:y_ \ {c1}(t)] $ *(異なるクラスに属する) *
$ y _ \ {c2}(t \:+ \:1)\:= \:y _ \ {c2}(t)\:+ \:\ beta(t)[x(t)\:-\:y_ \ {c2}(t)] $* (同じクラスに属する)*
ここで、$ \ beta $は、学習率$ \ alpha $および $ \ beta \:= \:m \ alpha(t)$ の倍数で、すべての 0.1 <m <0.5
適応共鳴理論
このネットワークは、1987年にStephen GrossbergとGail Carpenterによって開発されました。 競争に基づいており、教師なし学習モデルを使用します。 名前が示すように、適応共鳴理論(ART)ネットワークは、古いパターン(共鳴)を失うことなく、常に新しい学習(適応)に開かれています。 基本的に、ARTネットワークは、入力ベクトルを受け入れ、格納されているパターンのどれに最も似ているかに応じて、それをカテゴリの1つに分類するベクトル分類子です。
運営校長
ART分類の主な操作は、次の段階に分けることができます-
- 認識フェーズ-入力ベクトルは、出力層のすべてのノードで表示される分類と比較されます。 ニューロンの出力は、適用される分類と最適に一致する場合は「1」になり、それ以外の場合は「0」になります。
- 比較フェーズ-このフェーズでは、入力ベクトルと比較レイヤーベクトルの比較が行われます。 リセットの条件は、類似度が警戒パラメーターよりも低いことです。
- 検索フェーズ-このフェーズでは、ネットワークはリセットと上記のフェーズで行われた一致を検索します。 したがって、リセットが行われず、一致が非常に良好な場合、分類は終了します。 そうでない場合、プロセスが繰り返され、他の保存されたパターンを送信して正しい一致を見つける必要があります。
ART1
これは、バイナリベクトルをクラスター化するように設計されたARTの一種です。 これについては、そのアーキテクチャで理解できます。
ART1のアーキテクチャ
それは次の2つのユニットで構成されています-
計算ユニット-以下で構成されています-
- 入力ユニット(F〜1〜レイヤー)-さらに次の2つの部分があります-
- * F〜1〜(a)レイヤー(入力部分)*-ART1では、入力ベクトルのみを持つのではなく、この部分に処理はありません。 F〜1〜(b)層(インターフェース部分)に接続されています。
- * F〜1〜(b)レイヤー(インターフェイス部分)-この部分は、入力部分からの信号をF〜2〜レイヤーの信号と結合します。 F〜1〜(b)レイヤーはボトムアップウェイト b〜ij〜を介してF〜2〜レイヤーに接続され、F〜2〜レイヤーはトップダウンウェイト t〜を介してF〜1〜(b)レイヤーに接続されますジ〜*。
- クラスターユニット(F〜2〜レイヤー)-これは競合レイヤーです。 入力パターンを学習するために、最大のネット入力を持つユニットが選択されます。 他のすべてのクラスターユニットのアクティブ化は0に設定されます。
- リセットメカニズム-このメカニズムの動作は、トップダウンウェイトと入力ベクトルの類似性に基づいています。 ここで、この類似性の程度が警戒パラメーターよりも小さい場合、クラスターはパターンを学習できず、残りは発生します。
補足ユニット-リセットメカニズムの実際の問題は、特定の条件下でレイヤー* F〜2〜を禁止する必要があり、何らかの学習が発生したときにも利用可能でなければならないことです。 そのため、2つの補助ユニット、つまり G〜1〜および G〜2〜がリセットユニット *R とともに追加されます。 それらは「ゲインコントロールユニット」と呼ばれます。 これらのユニットは、ネットワークに存在する他のユニットと信号を送受信します。 ’+’ は興奮性信号を示し、 ’−’ は抑制性信号を示します。
使用されるパラメーター
次のパラメータが使用されます-
- n -入力ベクトルの成分の数
- m -形成できるクラスターの最大数
- * b〜ij〜*-F〜1〜(b)からF〜2〜層までの重み、つまり ボトムアップウェイト
- * t〜ji〜*-F〜2〜からF〜1〜(b)層までの重み、つまり トップダウンウェイト
- ρ-警戒パラメータ
- || x || -ベクトルxのノルム
アルゴリズム
- ステップ1 *-学習率、警戒パラメータ、および重みを次のように初期化します-
$$ \ alpha \:> \:1 \:\:and \:\:0 \:
$$ 0 \:
- ステップ2 *-停止条件が真でない場合、ステップ3-9を続行します。
- ステップ3 *-トレーニング入力ごとにステップ4-6を続行します。
- ステップ4 *-すべてのF〜1〜(a)およびF〜1〜ユニットのアクティベーションを次のように設定します
- F〜2〜= 0およびF〜1〜(a)=入力ベクトル*
- ステップ5 *-F〜1〜(a)からF〜1〜(b)層への入力信号は次のように送信する必要があります
s _ \ {i} \:= \:x _ \ {i}
- ステップ6 *-抑制されたF〜2〜ノードごとに
$ y _ \ {j} \:= \:\ sum_i b _ \ {ij} x _ \ {i} $条件は y〜j〜≠-1
- ステップ7 *-リセットが真の場合、ステップ8-10を実行します。
ステップ8 *-すべてのノードの y〜J〜≥y〜j〜の *J を見つける j
- ステップ9 *-F〜1〜(b)のアクティベーションを次のように再度計算します
x _ \ {i} \:= \:sitJi
ステップ10 *-次に、ベクトル *x およびベクトル s のノルムを計算した後、次のようにリセット条件を確認する必要があります-
*|| x ||/|| s ||* <警戒パラメーター*ρ*の場合、node *J* を禁止し、手順7に進みます。
それ以外の場合、 || x ||/|| s || ≥警戒パラメーター*ρ*の場合、さらに先に進みます。
ステップ11 *-ノード *J の重み更新は次のように実行できます-
b _ \ {ij}(new)\:= \:\ frac \ {\ alpha x _ \ {i}} \ {\ alpha \:-\:1 \:+ \:|| x ||}
t _ \ {ij}(new)\:= \:x _ \ {i}
- ステップ12 *-アルゴリズムの停止条件を確認する必要があり、次のようになる場合があります-
- 体重に変化はありません。
- ユニットのリセットは実行されません。
- エポックの最大数に達しました。
Kohonenの自己組織化機能マップ
任意の次元のパターンがあると仮定しますが、1次元または2次元でそれらが必要です。 次に、特徴マッピングのプロセスは、広いパターン空間を典型的な特徴空間に変換するのに非常に役立ちます。 ここで、なぜ自己組織化機能マップが必要なのかという疑問が生じます。 その理由は、任意の次元を1次元または2次元に変換する機能に加えて、隣接トポロジを保持する機能も必要だからです。
Kohonen SOMの近隣トポロジ
さまざまなトポロジがありますが、次の2つのトポロジが最も使用されます-
長方形グリッドトポロジ
このトポロジには、距離2グリッドに24個のノード、距離1グリッドに16個のノード、距離0グリッドに8個のノードがあります。これは、各長方形グリッド間の差が8ノードであることを意味します。 勝利ユニットは#で示されます。
六角形のグリッドトポロジ
このトポロジには、距離2グリッドに18ノード、距離1グリッドに12ノード、距離0グリッドに6ノードがあります。つまり、各長方形グリッド間の差は6ノードです。 勝利ユニットは#で示されます。
建築
KSOMのアーキテクチャは、競合ネットワークのアーキテクチャに似ています。 前述の近隣スキームの助けを借りて、トレーニングはネットワークの拡張された領域で実行できます。
トレーニングのアルゴリズム
- ステップ1 *-重み、学習率*α*および近傍トポロジスキームを初期化します。
- ステップ2 *-停止条件が真でない場合、ステップ3-9を続行します。
ステップ3 *-入力ベクトル *x ごとにステップ4-6を続けます。
ステップ4 *- *j = 1〜m のユークリッド距離の平方を計算する
D(j)\:= \:\ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ displaystyle \ sum \ limits _ \ {j = 1} ^ m(x _ \ {i} \:-\: w _ \ {ij})^ 2
ステップ5 *- *D(j) が最小の勝者ユニット J を取得します。
- ステップ6 *-次の関係により、勝利ユニットの新しい重量を計算します-
w _ \ {ij}(new)\:= \:w _ \ {ij}(old)\:+ \:\ alpha [x _ \ {i} \:-\:w _ \ {ij}(old)]
- ステップ7 *-次の関係により学習率*α*を更新します-
\ alpha(t \:+ \:1)\:= \:0.5 \ alpha t
- ステップ8 *-トポロジスキームの半径を小さくします。
- ステップ9 *-ネットワークの停止条件を確認します。
Associate Memory Network
これらの種類のニューラルネットワークは、パターンの関連付けに基づいて機能します。つまり、異なるパターンを保存し、出力を提供するときに、指定された入力パターンと照合することで保存されたパターンの1つを生成できます。 これらのタイプのメモリは、 Content-Addressable Memory (CAM)とも呼ばれます。 連想メモリは、保存されたパターンをデータファイルとして並列検索します。
以下は、私たちが観察できる2種類の連想記憶です-
- 自動連想メモリ
- ヘテロ連想メモリ
自動連想メモリ
これは、入力トレーニングベクトルと出力ターゲットベクトルが同じである単一層のニューラルネットワークです。 重みは、ネットワークが一連のパターンを保存するように決定されます。
建築
次の図に示すように、自動連想メモリネットワークのアーキテクチャには、 'n' 個の入力トレーニングベクトルと同様の 'n' 個の出力ターゲットベクトルがあります。
トレーニングアルゴリズム
トレーニングのために、このネットワークはヘブまたはデルタ学習ルールを使用しています。
ステップ1 *-すべての重みを w〜ij〜= 0(i = 1からn、j = 1からn)としてゼロに初期化します
- ステップ2 *-各入力ベクトルに対してステップ3〜4を実行します。
- ステップ3 *-各入力ユニットを次のようにアクティブにします-
x _ \ {i} \:= \:s _ \ {i} \ :( i \:= \:1 \:to \:n)
- ステップ4 *-各出力ユニットを次のようにアクティブにします-
y _ \ {j} \:= \:s _ \ {j} \ :( j \:= \:1 \:to \:n)
- ステップ5 *-次のように重みを調整します-
w _ \ {ij}(new)\:= \:w _ \ {ij}(old)\:+ \:x _ \ {i} y _ \ {j}
テストアルゴリズム
- ステップ1 *-ヘブのルールのトレーニング中に取得した重みを設定します。
- ステップ2 *-各入力ベクトルに対してステップ3〜5を実行します。
- ステップ3 *-入力ユニットのアクティベーションを入力ベクトルのアクティベーションに等しく設定します。
ステップ4 *-各出力ユニットへの正味入力を計算する *j = 1〜n
y _ \ {inj} \:= \:\ displaystyle \ sum \ limits _ \ {i = 1} ^ n x _ \ {i} w _ \ {ij}
- ステップ5 *-次のアクティベーション関数を適用して、出力を計算します
y _ \ {j} \:= \:f(y _ \ {inj})\:= \:\ begin \ {cases} +1&if \:y _ \ {inj} \:> \:0 \\ -1&if \:y _ \ {inj} \:\ leqslant \:0 \ end \ {cases}
ヘテロ連想メモリ
自動連想メモリネットワークと同様に、これも単層ニューラルネットワークです。 ただし、このネットワークでは、入力トレーニングベクトルと出力ターゲットベクトルは同じではありません。 重みは、ネットワークが一連のパターンを保存するように決定されます。 ヘテロ連想ネットワークは本質的に静的であるため、非線形操作や遅延操作はありません。
建築
次の図に示すように、ヘテロ連想メモリネットワークのアーキテクチャには、「n」個の入力トレーニングベクトルと「m」*個の出力ターゲットベクトルがあります。
トレーニングアルゴリズム
トレーニングのために、このネットワークはヘブまたはデルタ学習ルールを使用しています。
ステップ1 *-すべての重みを w〜ij〜= 0(i = 1からn、j = 1からm)としてゼロに初期化します
- ステップ2 *-各入力ベクトルに対してステップ3〜4を実行します。
- ステップ3 *-各入力ユニットを次のようにアクティブにします-
x _ \ {i} \:= \:s _ \ {i} \ :( i \:= \:1 \:to \:n)
- ステップ4 *-各出力ユニットを次のようにアクティブにします-
y _ \ {j} \:= \:s _ \ {j} \ :( j \:= \:1 \:to \:m)
- ステップ5 *-次のように重みを調整します-
w _ \ {ij}(new)\:= \:w _ \ {ij}(old)\:+ \:x _ \ {i} y _ \ {j}
テストアルゴリズム
- ステップ1 *-ヘブのルールのトレーニング中に取得した重みを設定します。
- ステップ2 *-各入力ベクトルに対してステップ3〜5を実行します。
- ステップ3 *-入力ユニットのアクティベーションを入力ベクトルのアクティベーションに等しく設定します。
ステップ4 *-各出力ユニットへの正味入力を計算します *j = 1 to m;
y _ \ {inj} \:= \:\ displaystyle \ sum \ limits _ \ {i = 1} ^ n x _ \ {i} w _ \ {ij}
- ステップ5 *-次のアクティベーション関数を適用して、出力を計算します
$$ y _ \ {j} \:= \:f(y _ \ {inj})\:= \:\ begin \ {cases} +1&if \:y _ \ {inj} \:> \:0 \\ 0&if \:y _ \ {inj} \:= \:0 \\-1&if \:y _ \ {inj} \:
人工ニューラルネットワーク-ホップフィールドネットワーク
ホップフィールドニューラルネットワークは、Dr。 ジョンJ. 1982年のホップフィールド。 これは、1つ以上の完全に接続された回帰ニューロンを含む単一の層で構成されています。 ホップフィールドネットワークは、一般的に自動関連付けおよび最適化タスクに使用されます。
離散ホップフィールドネットワーク
離散ライン方式で動作するホップフィールドネットワーク、言い換えれば、入力および出力パターンは離散ベクトルであり、本来はバイナリ(0,1)またはバイポーラ(+1、-1)であると言えます。 ネットワークには、自己接続のない対称ウェイト、つまり* w〜ij〜= w〜ji〜および *w〜ii〜= 0 があります。
建築
以下は、離散ホップフィールドネットワークについて留意すべき重要な点です-
- このモデルは、1つの反転出力と1つの非反転出力を持つニューロンで構成されています。
- 各ニューロンの出力は、自己の入力ではなく、他のニューロンの入力でなければなりません。
- 重量/接続強度は* w〜ij〜*で表されます。
- 接続は興奮性と抑制性があります。 ニューロンの出力が入力と同じ場合は興奮性になり、そうでなければ抑制性になります。 重みは対称、つまり w〜ij〜= w〜ji〜*
- Y〜2〜、 Y〜i〜、および Y〜n〜への Y〜1〜からの出力には、重み w〜12〜、 w〜1i〜および wがあります。それぞれ〜1n〜*。 同様に、他のアークには重みがあります。
トレーニングアルゴリズム
離散ホップフィールドネットワークのトレーニング中に、重みが更新されます。 知っているように、バイナリ入力ベクトルとバイポーラ入力ベクトルを持つことができます。 したがって、どちらの場合でも、重みの更新は次の関係で行うことができます
- ケース1 *-バイナリ入力パターン
バイナリパターンのセット s(p)、p = 1〜P
ここで、* s(p)= s〜1〜(p)、s〜2〜(p)、…、s〜i〜(p)、…、s〜n〜(p)*
重量マトリックスは
w _ \ {ij} \:= \:\ sum _ \ {p = 1} ^ P [2s _ \ {i}(p)-\:1] [2s _ \ {j}(p)-\:1] \:\:\:\:\:for \:i \:\ neq \:j
- ケース2 *-バイポーラ入力パターン
バイナリパターンのセット s(p)、p = 1〜P
ここで、* s(p)= s〜1〜(p)、s〜2〜(p)、…、s〜i〜(p)、…、s〜n〜(p)*
重量マトリックスは
w _ \ {ij} \:= \:\ sum _ \ {p = 1} ^ P [s _ \ {i}(p)] [s _ \ {j}(p)] \:\:\:\: \:for \:i \:\ neq \:j
テストアルゴリズム
- ステップ1 *-重みを初期化します。重みは、ヘビアンの原理を使用して、アルゴリズムから取得されます。
- ステップ2 *-ネットワークのアクティベーションが統合されていない場合、ステップ3〜9を実行します。
ステップ3 *-各入力ベクトル *X について、ステップ4〜8を実行します。
ステップ4 *-ネットワークの初期アクティベーションを次のように外部入力ベクトル *X と等しくする-
y _ \ {i} \:= \:x _ \ {i} \:\:\:for \:i \:= \:1 \:to \:n
ステップ5 *-各ユニット Y〜i〜*について、ステップ6-9を実行します。
- ステップ6 *-次のようにネットワークのネット入力を計算します-
y _ \ {ini} \:= \:x _ \ {i} \:+ \:\ displaystyle \ sum \ limits _ \ {j} y _ \ {j} w _ \ {ji}
- ステップ7 *-出力を計算するためにネット入力に次のようにアクティベーションを適用します-
$$ y _ \ {i} \:= \ begin \ {cases} 1&if \:y _ \ {ini} \:> \:\ theta _ \ {i} \\ y _ \ {i}&if \:y_ \ {ini} \:= \:\ theta _ \ {i} \\ 0&if \:y _ \ {ini} \:
ここで、$ \ theta _ \ {i} $はしきい値です。
ステップ8 *-この出力 y〜i〜*を他のすべてのユニットにブロードキャストします。
- ステップ9 *-ネットワークの接続をテストします。
エネルギー関数評価
エネルギー関数は、結合された関数として定義され、システムの状態の非増加関数です。
エネルギー関数E〜f〜、*リアプノフ関数*とも呼ばれ、離散ホップフィールドネットワークの安定性を決定し、次のように特徴付けられます-
E _ \ {f} \:= \:-\ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ displaystyle \ sum \ limits _ \ {j = 1} ^ n y _ \ {i} y _ \ {j} w _ \ {ij} \:-\:\ displaystyle \ sum \ limits _ \ {i = 1} ^ n x _ \ {i} y _ \ {i} \:+ \: \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ theta _ \ {i} y _ \ {i}
条件-安定したネットワークでは、ノードの状態が変化するたびに、上記のエネルギー関数が減少します。
ノード i の状態が$ y_i ^ \ {(k)} $から$ y_i ^ \ {(k \:+ \:1)} $に変化した場合、次にエネルギー変化$ \ Delta E _ \ {f} $は次の関係で与えられます
\ Delta E _ \ {f} \:= \:E _ \ {f}(y_i ^ \ {(k + 1)})\:-\:E _ \ {f}(y_i ^ \ {(k)} )
= \:-\ left(\ begin \ {array} \ {c} \ displaystyle \ sum \ limits _ \ {j = 1} ^ n w _ \ {ij} y_i ^ \ {(k)} \:+ \ :x _ \ {i} \:-\:\ theta _ \ {i} \ end \ {array} \ right)(y_i ^ \ {(k + 1)} \:-\:y_i ^ \ {(k)} )
= \:-\ :( net _ \ {i})\ Delta y _ \ {i}
ここで$ \ Delta y _ \ {i} \:= \:y_i ^ \ {(k \:+ \:1)} \:-\:y_i ^ \ {(k)} $
エネルギーの変化は、一度に1つのユニットのみがそのアクティベーションを更新できるという事実に依存します。
連続ホップフィールドネットワーク
離散ホップフィールドネットワークと比較して、連続ネットワークには連続変数として時間があります。 また、巡回セールスマン問題などの自動関連付けおよび最適化問題でも使用されます。
モデル-シグモイド活性化関数を介して入力電圧を出力電圧にマッピングできるアンプなどの電気部品を追加することにより、モデルまたはアーキテクチャを構築できます。
エネルギー関数評価
E_f = \ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ sum _ \ {\ substack \ {j = 1 \\ j \ ne i}} ^ n y_i y_j w _ \ {ij}-\ displaystyle \ sum \ limits _ \ {i = 1} ^ n x_i y_i + \ frac \ {1} \ {\ lambda} \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ sum _ \ {\ substack \ {j = 1 \\ j \ ne i}} ^ n w _ \ {ij} g _ \ {ri} \ int _ \ {0} ^ \ {y_i} a ^ \ {-1}(y )dy
ここで、λ*はゲインパラメーターおよび g〜ri〜*入力コンダクタンスです。
ボルツマンマシン
これらは、反復構造を持つ確率的学習プロセスであり、ANNで使用される初期の最適化手法の基礎です。 ボルツマンマシンは、1985年にジェフリーヒントンとテリーセノフスキーによって発明されました。 より明確なことは、Boltzmann MachineのHintonの言葉で見ることができます。
「このネットワークの驚くべき機能は、ローカルで利用可能な情報のみを使用することです。 重量の変化は、それが接続する2つのユニットの動作にのみ依存しますが、たとえ変化によってグローバルな測定値が最適化されるとしても」
ボルツマンマシンに関するいくつかの重要な点-
- 繰り返し構造を使用します。
- これらは確率ニューロンで構成され、1または0の2つの可能な状態のいずれかを持ちます。
- このニューロンの一部は適応型(自由状態)で、一部は固定されています(凍結状態)。
- シミュレートされたアニーリングを離散ホップフィールドネットワークに適用すると、ボルツマンマシンになります。
ボルツマンマシンの目的
ボルツマンマシンの主な目的は、問題の解決を最適化することです。 その特定の問題に関連する重みと量を最適化するのは、ボルツマンマシンの仕事です。
建築
次の図は、ボルツマンマシンのアーキテクチャを示しています。 図から明らかなように、これはユニットの2次元配列です。 ここで、ユニット間の相互接続の重みは –p です( p> 0 )。 自己接続の重みは b で与えられます( b> 0 )。
トレーニングアルゴリズム
ボルツマンマシンの重みは固定されていることがわかっているため、ネットワーク内の重みを更新する必要がないため、トレーニングアルゴリズムはありません。 ただし、ネットワークをテストするには、重みを設定し、コンセンサス関数(CF)を見つける必要があります。
ボルツマンマシンにはユニット* U〜i〜および U〜j〜*のセットがあり、それらに双方向接続があります。
- * w〜ij〜*などの固定ウェイトを検討しています。
- * U〜i〜と U〜j〜が接続されている場合、 *w〜ij〜≠0 また、重み付き相互接続には対称性があります。 * w〜ij〜 = w〜ji〜**。
- * w〜ii〜*も存在します。 ユニット間に自己接続があります。
- ユニット* U〜i〜の場合、その状態 u〜i〜*は1または0になります。
ボルツマンマシンの主な目的は、次の関係によって与えられるコンセンサス関数(CF)を最大化することです。
CF \:= \:\ displaystyle \ sum \ limits _ \ {i} \ displaystyle \ sum \ limits _ \ {j \ leqslant i} w _ \ {ij} u _ \ {i} u _ \ {j}
さて、状態が1から0または0から1に変化すると、コンセンサスの変化は次の関係によって与えられます-
\ Delta CF \:= \ :( 1 \:-\:2u _ \ {i})(w _ \ {ij} \:+ \:\ displaystyle \ sum \ limits _ \ {j \ neq i} u _ \ { i} w _ \ {ij})
ここで、* u〜i〜は U〜i〜*の現在の状態です。
係数の変動(* 1-2u〜i〜*)は次の関係で与えられます-
(1 \:-\:2u _ \ {i})\:= \:\ begin \ {cases} +1、およびU _ \ {i} \:is \:currently \:off \\-1、& U _ \ {i} \:is \:currently \:on \ end \ {cases}
通常、ユニット* U〜i〜*は状態を変更しませんが、変更すると、情報はユニットのローカルに存在します。 その変更により、ネットワークのコンセンサスも増加します。
ユニットの状態の変化を受け入れるネットワークの確率は、次の関係によって与えられます-
AF(i、T)\:= \:\ frac \ {1} \ {1 \:+ \:exp [-\ frac \ {\ Delta CF(i)} \ {T}]}
ここで、 T は制御パラメーターです。 CFが最大値に達すると減少します。
テストアルゴリズム
- ステップ1 *-以下を初期化してトレーニングを開始します-
- 問題の制約を表す重み
- 制御パラメーターT
- ステップ2 *-停止条件が真でない場合、ステップ3〜8を続行します。
- ステップ3 *-ステップ4〜7を実行します。
ステップ4 *-状態の1つが重みを変更したと仮定し、整数 *I、J を 1 と n の間のランダムな値として選択します。
- ステップ5 *-コンセンサスの変化を次のように計算します-
\ Delta CF \:= \ :( 1 \:-\:2u _ \ {i})(w _ \ {ij} \:+ \:\ displaystyle \ sum \ limits _ \ {j \ neq i} u _ \ { i} w _ \ {ij})
- ステップ6 *-このネットワークが状態の変化を受け入れる確率を計算する
AF(i、T)\:= \:\ frac \ {1} \ {1 \:+ \:exp [-\ frac \ {\ Delta CF(i)} \ {T}]}
- ステップ7 *-この変更を次のように承認または拒否します-
ケースI *- *R <AF の場合、変更を受け入れます。
ケースII *- *R≥AF の場合、変更を拒否します。
ここで、 R は0〜1の乱数です。
- ステップ8 *-次のように制御パラメーター(温度)を下げます-
- T(新)=0.95T(旧)*
- ステップ9 *-次のような停止条件をテストします-
- 温度が指定値に達する
- 指定された反復回数の状態に変化はありません
Brain-State-in-a-Boxネットワーク
Brain-State-in-a-Box(BSB)ニューラルネットワークは、非線形の自動連想ニューラルネットワークであり、2つ以上のレイヤーとのヘテロ連想に拡張できます。 また、ホップフィールドネットワークに似ています。 J.A.によって提案されました。 アンダーソン、J.W。 Silverstein、S.A. リッツとRS 1977年のジョーンズ。
BSBネットワークについて覚えておくべき重要な点-
- これは、入力スペースの次元 n に応じた最大ノード数を持つ完全に接続されたネットワークです。
- すべてのニューロンは同時に更新されます。
- ニューロンは-1〜+1の値を取ります。
数学的定式化
BSBネットワークで使用されるノード関数は、次のように定義できるランプ関数です-
f(net)\:= \:min(1、\:max(-1、\:net))
このランプ関数は有界で連続的です。
各ノードがその状態を変更することを知っているので、次の数学的な関係の助けを借りて行うことができます-
x _ \ {t}(t \:+ \:1)\:= \:f \ left(\ begin \ {array} \ {c} \ displaystyle \ sum \ limits _ \ {j = 1} ^ n w_ \ {i、j} x _ \ {j}(t)\ end \ {array} \ right)
ここで、* x〜i〜(t)は、時刻 *t での* i〜th〜*ノードの状態です。
- i〜th〜ノードから j〜th〜*ノードまでの重みは、次の関係で測定できます-
w _ \ {ij} \:= \:\ frac \ {1} \ {P} \ displaystyle \ sum \ limits _ \ {p = 1} ^ P(v _ \ {p、i} \:v _ \ {p 、j})
ここで、 P はトレーニングパターンの数で、バイポーラです。
ホップフィールドネットワークを使用した最適化
最適化は、設計、状況、リソース、システムなどを可能な限り効果的にするアクションです。 コスト関数とエネルギー関数の類似性を使用して、高度に相互接続されたニューロンを使用して最適化問題を解決できます。 このような種類のニューラルネットワークはホップフィールドネットワークであり、1つ以上の完全に接続された回帰ニューロンを含む単一層で構成されています。 これは最適化に使用できます。
最適化のためにホップフィールドネットワークを使用する際の注意点-
- エネルギー関数はネットワークの最小値でなければなりません。
- 保存されたパターンから1つを選択するのではなく、満足のいく解決策を見つけます。
- ホップフィールドネットワークによって検出されるソリューションの品質は、ネットワークの初期状態に大きく依存します。
巡回セールスマン問題
セールスマンが移動した最短ルートを見つけることは、Hopfieldニューラルネットワークを使用して最適化できる計算上の問題の1つです。
TSPの基本概念
巡回セールスマン問題(TSP)は古典的な最適化問題で、セールスマンは互いに接続された n 都市を移動しなければならず、コストと移動距離を最小に保ちます。 たとえば、セールスマンは4つの都市A、B、C、Dのセットを旅行する必要があり、目的は最短の巡回ツアーABC–Dを見つけることです。これにより、最後の都市Dから最初の都市Aへ
行列表現
実際、n-city TSPの各ツアーは、* i〜th〜行が i〜th〜都市の場所を記述する *n&times n マトリックスとして表現できます。 4つの都市A、B、C、Dのこの行列、 M は、次のように表すことができます-
M = \ begin \ {bmatrix} A:&1&0&0&0 \\ B:&0&1&0&0 \\ C:&0&0&1&0 \\ D:&0 &0&0&1 \ end \ {bmatrix}
ホップフィールドネットワークによるソリューション
ホップフィールドネットワークによるこのTSPのソリューションを検討する際、ネットワーク内のすべてのノードは、マトリックス内の1つの要素に対応します。
エネルギー関数の計算
最適化されたソリューションであるためには、エネルギー関数が最小でなければなりません。 次の制約に基づいて、次のようにエネルギー関数を計算できます-
制約-I
エネルギー関数の計算の基礎となる最初の制約は、行列 M の各行で1つの要素が1に等しくなければならず、各行で他の要素が 0 に等しくなければならないことです。 TSPツアーの1つのポジション。 この制約は数学的に次のように書くことができます-
\ displaystyle \ sum \ limits _ \ {j = 1} ^ n M _ \ {x、j} \:= \:1 \:for \:x \:\ in \:\ lbrace1、...、n \ rbrace
今、上記の制約に基づいて、最小化されるエネルギー関数は、に比例する項が含まれます-
\ displaystyle \ sum \ limits _ \ {x = 1} ^ n \ left(\ begin \ {array} \ {c} 1 \:-\:\ displaystyle \ sum \ limits _ \ {j = 1} ^ n M_ \ {x、j} \ end \ {array} \ right)^ 2
制約II
私たちが知っているように、TSPでは1つの都市がツアーの任意の位置で発生する可能性があるため、マトリックス M の各列では、1つの要素が1に等しく、他の要素が0に等しくなければなりません この制約は数学的に次のように書くことができます-
\ displaystyle \ sum \ limits _ \ {x = 1} ^ n M _ \ {x、j} \:= \:1 \:for \:j \:\ in \:\ lbrace1、...、n \ rbrace
今、上記の制約に基づいて、最小化されるエネルギー関数は、に比例する項が含まれます-
\ displaystyle \ sum \ limits _ \ {j = 1} ^ n \ left(\ begin \ {array} \ {c} 1 \:-\:\ displaystyle \ sum \ limits _ \ {x = 1} ^ n M_ \ {x、j} \ end \ {array} \ right)^ 2
コスト関数の計算
*C* で表される( *n×n* )の正方行列が、 *n* 都市( *n> 0* )のTSPのコスト行列を表すとします。 以下は、コスト関数を計算する際のいくつかのパラメータです-
- * C〜x、y〜-コストマトリックスの要素は、都市 *x から y への移動コストを示します。
- AとBの要素の隣接関係は、次の関係によって示すことができます-
M _ \ {x、i} \:= \:1 \:\:and \:\:M _ \ {y、i \ pm 1} \:= \:1
私たちが知っているように、マトリックスでは、各ノードの出力値は0または1のいずれかです。したがって、都市A、Bのすべてのペアについて、エネルギー関数に次の項を追加できます-
\ displaystyle \ sum \ limits _ \ {i = 1} ^ n C _ \ {x、y} M _ \ {x、i}(M _ \ {y、i + 1} \:+ \:M _ \ {y、 i-1})
上記のコスト関数と制約値に基づいて、最終エネルギー関数 E は次のように与えることができます-
E \:= \:\ frac \ {1} \ {2} \ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ displaystyle \ sum \ limits _ \ {x} \ displaystyle \ sum \ limits _ \ { y \ neq x} C _ \ {x、y} M _ \ {x、i}(M _ \ {y、i + 1} \:+ \:M _ \ {y、i-1})\:+
\:\ begin \ {bmatrix} \ gamma _ \ {1} \ displaystyle \ sum \ limits _ \ {x} \ left(\ begin \ {array} \ {c} 1 \:-\:\ displaystyle \ sum \ limits _ \ {i} M _ \ {x、i} \ end \ {array} \ right)^ 2 \:+ \:\ gamma _ \ {2} \ displaystyle \ sum \ limits _ \ {i} \ left(\ begin \ {array} \ {c} 1 \:-\:\ displaystyle \ sum \ limits _ \ {x} M _ \ {x、i} \ end \ {array} \ right)^ 2 \ end \ {bmatrix}
ここで、*γ〜1〜*および*γ〜2〜*は2つの計量定数です。
その他の最適化手法
反復勾配降下法
最急降下とも呼ばれる勾配降下は、関数の極小値を見つけるための反復最適化アルゴリズムです。 機能を最小化する一方で、コストまたはエラーを最小化することに関心があります(巡回セールスマン問題を思い出してください)。 ディープラーニングで広く使用されており、さまざまな状況で役立ちます。 ここで覚えておくべきポイントは、グローバルな最適化ではなくローカルな最適化に関係しているということです。
主な作業アイデア
私たちは、次の手順の助けを借りて勾配降下の主な作業のアイデアを理解することができます-
- 最初に、解の初期推測から始めます。
- 次に、そのポイントで関数の勾配を取ります。
- 後で、勾配の負の方向にソリューションをステップ実行してプロセスを繰り返します。
上記の手順に従うことにより、アルゴリズムは最終的に勾配がゼロの場所に収束します。
数学的概念
関数 f(x) があり、この関数の最小値を見つけようとしているとします。 以下は、最小の f(x) を見つける手順です。
- まず、初期値$ x _ \ {0} \:for \:x $を指定します
- 関数の勾配$ \ nabla f $を取得します。勾配はその x で曲線の勾配を与え、その方向は関数の増加を指し示し、最適な方向を見つけます。最小化します。
- 次のようにxを変更します- + x _ \ {n \:+ \:1} \:= \:x _ \ {n} \:-\:\ theta \ nabla f(x _ \ {n})
ここで、*θ> 0 *は、アルゴリズムに小さなジャンプを強制させるトレーニングレート(ステップサイズ)です。
ステップサイズの推定
実際、誤ったステップサイズ*θ*は収束に到達しない可能性があるため、同じものを慎重に選択することが非常に重要です。 ステップサイズを選択するときは、次の点を覚えておく必要があります
- 大きすぎるステップサイズを選択しないでください。そうしないと、マイナスの影響があります。 収束するのではなく発散します。
- 小さすぎるステップサイズを選択しないでください。そうしないと、収束するのに多くの時間がかかります。
ステップサイズの選択に関するいくつかのオプション-
- 1つのオプションは、固定ステップサイズを選択することです。
- 別のオプションは、反復ごとに異なるステップサイズを選択することです。
焼き鈍し法
シミュレーテッドアニーリング(SA)の基本概念は、固体のアニーリングに基づいています。 アニーリングの過程で、金属を融点以上に加熱して冷却すると、構造特性は冷却速度に依存します。 また、SAはアニーリングの冶金プロセスをシミュレートしているとも言えます。
ANNで使用
SAは、与えられた関数のグローバル最適化を近似するための、アニーリングのアナロジーに触発された確率的計算手法です。 SAを使用して、フィードフォワードニューラルネットワークをトレーニングできます。
アルゴリズム
- ステップ1 *-ランダムソリューションを生成します。
- ステップ2 *-コスト関数を使用してコストを計算します。
- ステップ3 *-ランダムな隣接ソリューションを生成します。
- ステップ4 *-同じコスト関数で新しいソリューションコストを計算します。
- ステップ5 *-次のように、新しいソリューションのコストと古いソリューションのコストを比較します-
- Cost〜New Solution〜<Cost〜Old Solution〜*の場合、新しいソリューションに移動します。
- ステップ6 *-停止条件をテストします。これは、到達した反復の最大数であるか、許容可能なソリューションを取得します。
人工ニューラルネットワーク-遺伝的アルゴリズム
自然は常にすべての人類にとって素晴らしいインスピレーションの源となっています。 遺伝的アルゴリズム(GA)は、自然selectionと遺伝学の概念に基づいた検索ベースのアルゴリズムです。 GAは、 Evolutionary Computation として知られるはるかに大きな計算のブランチのサブセットです。
GAは、ミシガン大学のJohn Hollandと彼の学生と同僚、特にDavid Eによって開発されました。 ゴールドバーグは、その後、さまざまな最適化問題で試行され、高い成功を収めています。
GAには、特定の問題に対する可能な解決策のプールまたは集団があります。 その後、これらのソリューションは組換えや突然変異(自然遺伝学のように)を受け、新しい子供を生み出し、このプロセスはさまざまな世代にわたって繰り返されます。 各個人(または候補解)には(目的関数値に基づいて)適合値が割り当てられ、適合者には、より多くの「適合」個体を交配して生み出す可能性が高くなります。 これは、ダーウィンの「適者生存」の理論と一致しています。
このようにして、停止基準に達するまで、世代を超えてより良い個人またはソリューションを「進化」させ続けます。
遺伝的アルゴリズムは本質的に十分にランダム化されていますが、履歴情報も活用するため、ランダムローカル検索(これまでさまざまなランダムソリューションを試行し、これまでのベストを追跡する)よりもはるかに優れたパフォーマンスを発揮します。
GAの利点
GAにはさまざまな利点があり、GAは非常に人気があります。 これらには-
- 派生情報は必要ありません(多くの実際の問題では利用できない場合があります)。
- 従来の方法と比較して、より高速で効率的です。
- 非常に優れた並列機能を備えています。
- 連続関数と離散関数の両方、および多目的問題を最適化します。
- 単一のソリューションではなく、「良い」ソリューションのリストを提供します。
- 問題に対する答えは常に得られ、時間の経過とともに改善されます。
- サーチスペースが非常に大きく、多数のパラメータが関係する場合に役立ちます。
GAの制限
他の手法と同様に、GAにもいくつかの制限があります。 これらには-
- GAはすべての問題、特に単純で派生情報が利用可能な問題に適しているわけではありません。
- フィットネス値は繰り返し計算されるため、問題によっては計算コストが高くなる場合があります。
- 確率的であるため、ソリューションの最適性または品質に関する保証はありません。
- 適切に実装されていない場合、GAは最適なソリューションに収束しない可能性があります。
GA –モチベーション
遺伝的アルゴリズムには、「十分に」ソリューションを「十分に」提供する機能があります。 これにより、Gasは最適化問題の解決に使用するのに魅力的です。 GAが必要な理由は次のとおりです-
難しい問題を解決する
コンピュータサイエンスには、 NP-Hard である大きな問題があります。 これが本質的に意味することは、最も強力なコンピューティングシステムでさえ、その問題を解決するのに非常に長い時間(偶数年!)を要するということです。 このようなシナリオでは、GAは短時間で*使用可能な最適に近いソリューション*を提供する効率的なツールであることが証明されています。
勾配ベースの方法の失敗
従来の計算ベースの方法は、ランダムなポイントから開始し、丘の頂上に到達するまで勾配の方向に移動することにより機能します。 この手法は効率的であり、線形回帰のコスト関数のような単一ピークの目的関数に対して非常にうまく機能します。 しかし、ほとんどの実際の状況では、多くの山と谷で構成されたランドスケープと呼ばれる非常に複雑な問題があり、そのような方法は失敗します。次の図で。
優れたソリューションを迅速に取得する
巡回セールスマン問題(TSP)のようないくつかの困難な問題には、経路探索やVLSI設計などの実際のアプリケーションがあります。 GPSナビゲーションシステムを使用していて、ソースから目的地までの「最適な」パスを計算するのに数分(または数時間)かかっていることを想像してください。 このような実際のアプリケーションの遅延は許容できないため、「高速」に配信される「十分な」ソリューションが必要です。
最適化の問題にGAを使用する方法は?
最適化は、設計、状況、リソース、システムなどを可能な限り効果的にするアクションであることはすでにわかっています。 最適化プロセスを次の図に示します。
最適化プロセスのGAメカニズムの段階
以下は、問題の最適化に使用されるGAメカニズムの段階です。
- 初期母集団をランダムに生成します。
- 最適なフィットネス値を持つ初期ソリューションを選択します。
- 突然変異演算子とクロスオーバー演算子を使用して、選択したソリューションを再結合します。
- 母集団に子孫を挿入します。
- 停止条件が満たされた場合、最適なフィットネス値でソリューションを返します。 それ以外の場合は、手順2に進みます。
ニューラルネットワークのアプリケーション
ANNが広範囲に使用されている分野を研究する前に、ANNがアプリケーションの優先選択である理由を理解する必要があります。
なぜ人工ニューラルネットワークなのか?
上記の質問に対する答えを人間の例で理解する必要があります。 子供の頃、私たちは親や教師を含む長老の助けを借りて物事を学びました。 その後、自己学習または練習により、私たちは一生を通じて学習を続けます。 科学者や研究者も人間のように機械をインテリジェントにしていますが、ANNは次の理由で同じように非常に重要な役割を果たしています-
- ニューラルネットワークの助けを借りて、アルゴリズム手法が高価であるか、存在しない問題の解決策を見つけることができます。
- ニューラルネットワークは例によって学習できるため、あまりプログラミングする必要はありません。
- ニューラルネットワークは、従来の速度よりも正確で非常に高速です。
適用分野
以下は、ANNが使用されている分野の一部です。 それは、ANNの開発とアプリケーションに学際的なアプローチがあることを示唆しています。
音声認識
音声は、人間と人間の相互作用において重要な役割を果たします。 したがって、コンピューターとの音声インターフェイスを期待するのは自然なことです。 現在の時代では、機械との通信には、学習と使用が難しい洗練された言語が必要です。 このコミュニケーションの障壁を緩和するための簡単な解決策は、機械が理解できる話し言葉によるコミュニケーションです。
この分野では大きな進歩がありましたが、そのような種類のシステムは、語彙や文法が限られているという問題に直面しています。 ANNはこの分野で重要な役割を果たしています。 次のANNは音声認識に使用されています-
- 多層ネットワーク
- 繰り返し接続する多層ネットワーク
- Kohonenの自己組織化機能マップ
これに最も役立つネットワークは、音声波形の短いセグメントとして入力を持つKohonen自己組織化機能マップです。 特徴抽出手法と呼ばれる、出力配列と同じ種類の音素をマッピングします。 特徴を抽出した後、バックエンド処理としていくつかの音響モデルの助けを借りて、発話を認識します。
文字認識
これは、パターン認識の一般的な領域に該当する興味深い問題です。 手書き文字(文字または数字)の自動認識のために、多くのニューラルネットワークが開発されています。 以下は、文字認識に使用されているいくつかのANNです-
- バックプロパゲーションニューラルネットワークなどの多層ニューラルネットワーク。
- ネオコグニトロン
バックプロパゲーションニューラルネットワークにはいくつかの隠れ層がありますが、ある層から次の層への接続のパターンはローカライズされています。 同様に、ネオコグニトロンにもいくつかの隠れ層があり、そのような種類のアプリケーションでは、層ごとにトレーニングが行われます。
署名検証アプリケーション
署名は、法的取引で個人を認証および認証する最も便利な方法の1つです。 署名検証手法は、非ビジョンベースの手法です。
このアプリケーションの場合、最初のアプローチは、特徴を抽出すること、または署名を表す幾何学的特徴セットを抽出することです。 これらの機能セットでは、効率的なニューラルネットワークアルゴリズムを使用してニューラルネットワークをトレーニングする必要があります。 この訓練されたニューラルネットワークは、検証段階で署名が本物または偽物として分類されます。
人間の顔認識
これは、指定された顔を識別する生体認証方法の1つです。 「非顔」画像の特性評価のため、これは典型的なタスクです。 ただし、ニューラルネットワークが十分に訓練されている場合は、2つのクラス、つまり顔を持つ画像と顔がない画像に分類できます。
まず、すべての入力画像を前処理する必要があります。 次に、その画像の次元を減らす必要があります。 そして最後に、ニューラルネットワークトレーニングアルゴリズムを使用して分類する必要があります。 次のニューラルネットワークは、前処理された画像でトレーニング目的に使用されます-
- バックプロパゲーションアルゴリズムを使用してトレーニングされた完全に接続された多層フィードフォワードニューラルネットワーク。
- 次元削減のために、主成分分析(PCA)が使用されます。