For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
機械学習を使用してシーケンスをモデル化する場合、多くの場合、目標は、あるシーケンスを別のシーケンスに変換することです。たとえば、英語の単語をフランス語の単語に変換したり、音声認識のために音圧を単語の ID に変換したりします。場合によっては、別個のターゲット シーケンスが存在しない可能性があるため、入力シーケンス内の次の項が教師信号として機能することがあります。予測には自然な順序があるため、このアプローチは時系列シーケンスにとってより自然です。ただし、画像にも適用できるため、教師あり学習と教師なし学習の区別があいまいになります。
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
Lecture from the course Neural Networks for Machine Learning, as taught by Geoffrey Hinton (University of Toronto) on Coursera in 2012. Link to the course (l...
For cool updates on AI research, follow me at https://twitter.com/iamvriad.Lecture from the course Neural Networks for Machine Learning, as taught by Geoffre...
講義 6.1 — ミニバッチ勾配降下法の概要
講義 6.1 — ミニバッチ勾配降下法の概要 [機械学習のためのニューラル ネットワーク]
このビデオでは、大規模なニューラル ネットワークで広く使用されているミニバッチ バージョンに焦点を当てて、ニューラル ネットワークの確率的勾配降下学習について説明します。線形ニューロンの誤差曲面は二次ボウルを形成します。横軸は重みを表し、縦軸は誤差を表します。多層非線形ネットワークの場合、誤差曲面はより複雑になりますが、局所的には二次ボウルの一部で近似されます。
フルバッチ学習を使用する場合、最も急な勾配の方向に沿って降下すると、目的の目的地に到達できない可能性があります。最も急な降下方向は、多くの場合、目的の方向に対してほぼ直角になるため、収束の問題が発生します。誤差曲面はある方向では大きく湾曲し、他の方向ではあまり湾曲しない傾向があるため、この問題は非線形多層ネットワークでも依然として残ります。
これに対処するために、確率的勾配降下法 (SGD) が採用されています。データセット全体の勾配を計算する代わりに、SGD はデータのサブセットまたはミニバッチの勾配を計算します。このアプローチには、重み更新の計算量の削減や、複数のトレーニング ケースの勾配計算を並列化できる機能など、いくつかの利点があります。
ミニバッチを使用すると、不必要な重量のスロッシングを回避できます。データセット全体を表すミニバッチを用意し、単一クラスのすべての例を含むような特徴のないものを避けることが重要です。利用可能な完全勾配アルゴリズムもありますが、計算効率の点から、大規模で冗長なトレーニング セットにはミニバッチ学習が一般に好まれます。
基本的なミニバッチ勾配降下学習アルゴリズムには、初期学習率の推測とネットワークのパフォーマンスの監視が含まれます。誤差が悪化したり変動したりすると、学習率が低下します。誤差の減少が遅すぎる場合は、学習率を高めることができます。これらの観察に基づいて学習率の調整を自動化すると有益です。学習の終わりに近づくと、ミニバッチの勾配によって生じる重みの変動を平滑化するために学習率を下げると役立つことがよくあります。検証セットは、学習率をいつ下げるかを評価し、誤差が一貫して減少しなくなる時期を判断するために使用されます。
ミニバッチ勾配降下法は、学習率を慎重に調整し、トレーニング プロセス全体を通じて調整することにより、冗長データセットで大規模なニューラル ネットワークをトレーニングするための効果的なアプローチを提供します。
さらに、ニューラル ネットワークの学習アルゴリズムには、完全勾配アルゴリズムとミニバッチ アルゴリズムという 2 つの主なタイプがあることに注意してください。完全勾配アルゴリズムは、すべてのトレーニング ケースを使用して勾配を計算し、学習を高速化するためのさまざまな最適化手法を可能にします。ただし、滑らかな非線形関数用に開発されたこれらの手法は、多層ニューラル ネットワークで効果的に機能するように修正が必要な場合があります。
一方、ミニバッチ学習は、冗長性が高く大規模なトレーニング セットの場合に有利です。ミニバッチは比較的大きくする必要があるかもしれませんが、計算効率が向上します。ミニバッチを使用すると、グラフィックス プロセッシング ユニット (GPU) などの最新のプロセッサの機能を活用して、複数のトレーニング ケースの勾配を同時に並列計算できます。
トレーニング プロセス全体を通じて、学習率とのバランスを取ることが重要です。学習率の調整は、ネットワークのパフォーマンスと観察されたエラーの動作に基づいて行う必要があります。学習の終わりに向けて、学習率を下げると、ミニバッチの勾配によって引き起こされる変動を平滑化し、適切な妥協点である最終的な重みのセットを達成するのに役立ちます。
検証セットは、ネットワークの進行状況を監視する上で重要な役割を果たします。別の検証セットで誤差を測定することで、誤差が一貫して減少しなくなったかどうかを評価し、学習率を調整する適切な時間を決定できます。これらの検証例は、トレーニングや最終テストには使用されません。
ミニバッチ勾配降下学習アルゴリズムは、冗長データセット上で大規模なニューラル ネットワークをトレーニングするための実用的かつ効率的なアプローチを提供します。学習率の慎重な調整、検証セットを使用したネットワークのパフォーマンスの監視、および代表的なミニバッチの使用が、トレーニングの成果の成功に貢献します。
講義 6.2 — ミニバッチ勾配降下法のためのコツの詰め合わせ
講義 6.2 — ミニバッチ勾配降下法のためのコツの詰め合わせ [機械学習のためのニューラル ネットワーク]
このビデオでは、ミニバッチで確率的勾配降下法を使用するときに発生するいくつかの問題について説明します。パフォーマンスを大幅に向上させるトリックは数多くあり、ニューラル ネットワークの「黒魔術」とも呼ばれます。このビデオでは重要なトリックのいくつかを説明します。
最初の問題、ニューラル ネットワークにおける重みの初期化から始めましょう。 2 つの隠れユニットが同じ重みとバイアスを持つ場合、それらは常に同じ勾配を受け取り、互いに区別されることはありません。異なる特徴検出器を学習できるようにするには、異なる重みで初期化する必要があります。これは通常、小さなランダムな重みを使用して対称性を破ることによって行われます。初期重みのサイズはすべてのユニットで同じであってはいけないことに注意することが重要です。より大きなファンイン (受信接続) を持つ隠れユニットは、より大きな重みで飽和する傾向があるため、そのような場合はより小さな重みが優先されます。一方、ファンインが小さい隠れユニットは、重みを大きくすることで恩恵を受けます。初期重みのサイズは、ファンインの平方根に比例する必要があります。
もう 1 つの重要な要素は、入力をシフトすることです。各入力コンポーネントに定数値を追加すると、学習速度に大きな影響を与える可能性があります。入力のシフトは、最急降下を使用する場合に特に効果的です。トレーニング データ全体の平均値が 0 になるように、各入力コンポーネントをシフトすることをお勧めします。
次に、誤差曲面と、それが重みとトレーニング ケースにどのように関連するかを考えてみましょう。場合によっては、重みが異なるトレーニング ケースを満たすと、誤差曲面が長くなり、学習が困難になることがあります。ただし、各入力成分から定数値を減算すると、誤差曲面を円形に変換できるため、学習が容易になります。
考慮すべきもう 1 つの要素は、隠しユニットの活性化機能です。 -1 から 1 までの範囲の双曲線正接は、平均値が 0 に近い隠れたユニットのアクティビティにつながるため、多くの場合好まれます。これにより、後続の層での学習の高速化が促進されます。ただし、ロジスティック活性化関数には、小さな負の入力に対してゼロの出力が提供され、ネットワークがそれらの入力の変動を無視できるという利点があります。双曲線正接では、そのような変動を無視するには、より大きな入力が必要です。
効果的な学習には、入力のスケーリングも重要です。入力コンポーネントを変換して、トレーニング セット全体にわたる単位分散 (通常の値は 1 またはマイナス 1) になるようにすることで、誤差曲面を改善できます。入力をスケーリングすると、重みの変更がすべての入力コンポーネントに同様の影響を与えるようになり、よりバランスの取れた学習プロセスが実現します。
ミニバッチ学習を高速化するには、考慮すべき主な方法が 4 つあります。
運動量: 勾配に基づいて重みを直接変更する代わりに、運動量は勾配を使用して重みの速度を加速します。このアプローチにより、重みが以前の勾配からの情報を保持できるようになります。
適応学習率: パラメーターごとに個別の適応学習率を使用し、経験的測定に基づいて調整すると、学習を向上させることができます。勾配の符号が変化し続けると、学習率が低下します。勾配が一定のままであれば、学習率は増加します。
RMSprop: この方法は、学習率を最近の勾配の大きさの移動平均で割ります。適切にスケーリングすることで、幅広い範囲のグラデーションを効果的に処理します。
フルバッチ学習: このアプローチには、学習にトレーニング セット全体を使用し、曲率情報を考慮した高度な最適化手法を採用することが含まれます。効果的である可能性もありますが、ミニバッチを処理するにはさらに調整が必要になる場合があります。
これらは、ミニバッチを使用した確率的勾配降下法のパフォーマンスを大幅に向上できる手法の一部にすぎません。
要約すると、ニューラル ネットワークのミニバッチを使用した確率的勾配降下法に関連するいくつかの重要な問題と手法について説明しました。これらのテクニックはニューラル ネットワークの「黒魔術」として機能し、パフォーマンスを大幅に向上させることができます。要点をまとめてみましょう。
重みの初期化: 隠れユニットがさまざまな特徴検出器を学習できるようにするには、重みを異なる方法で初期化することが重要です。対称性を崩す小さなランダムな重みを使用することで、各ユニットが互いに区別して開始されることを保証できます。初期ウェイトのサイズはファンインの平方根に比例する必要があり、これは適切な開始点を達成するのに役立ちます。
入力のシフト: 各コンポーネントに定数を追加して入力をシフトすると、学習速度に大きな影響を与える可能性があります。平均して入力の値がゼロになるように各コンポーネントをシフトすることは有益です。これは、トレーニング データ全体の入力値の平均を減算することで実現できます。
入力のスケーリング: 入力値のスケーリングは、確率的勾配降下法のもう 1 つの便利なテクニックです。各コンポーネントがトレーニング セット全体にわたって単位分散を持つように入力を変換すると、学習プロセスが簡素化されます。入力を再スケーリングすると、円形誤差曲面の作成に役立ち、勾配降下法がより効率的になります。
入力コンポーネントの相関を解除する: 入力ベクトルのコンポーネントを相関解除すると、特徴間の相関が除去され、学習が向上します。主成分分析はこれを達成するための有益な方法です。小さな固有値を持つ成分を削除し、残りの成分をスケーリングすることにより、円形の誤差曲面が得られ、勾配降下法が容易になります。
一般的な問題: ニューラル ネットワークのトレーニングで遭遇する一般的な問題には、初期学習率が大きいため隠れユニットがスタックすること、小さな重みから始めると学習が遅くなる、学習率が時期尚早に低下するなどがあります。最適な学習を確保するには、学習率を調整する際のバランスをとることが重要です。
ミニバッチ学習の高速化: 学習を高速化するために明示的に設計されたミニバッチ学習を高速化するには、運動量、適応学習率、RMSprop、曲率情報を使用した完全バッチ学習の 4 つの主な方法があります。これらの技術は、運動量、適応調整、勾配の大きさなどのさまざまなメカニズムを活用して、学習プロセスを加速します。
これらの手法により、ニューラル ネットワークのミニバッチを使用した確率的勾配降下法のパフォーマンスが大幅に向上しますが、最良の結果を得るには、当面の特定の問題を考慮し、さまざまなアプローチを実験することが不可欠です。最適化の分野では、ニューラル ネットワークでさらに効率的な学習を行うために検討する価値のあるさらに高度な方法が提供されます。
これで、ニューラル ネットワークのミニバッチを使用した確率的勾配降下法に関連する課題とテクニックに関して、このビデオで取り上げられた主要なポイントが終わりました。
講義 6.3 — 運動量法
講義 6.3 — 運動量法 [機械学習のためのニューラル ネットワーク]
このビデオでは、ミニバッチでの確率的勾配降下法の使用に関連するいくつかの問題について説明し、その有効性を高めるためのいくつかのテクニックを検討します。これらのテクニックはニューラル ネットワークの「黒魔術」と考えられることが多く、重要なテクニックのいくつかについて説明します。
まず、ニューラル ネットワークにおける重みの初期化の問題に取り組みましょう。 2 つの隠れユニットの重みとバイアスが同じである場合、それらは常に同じ勾配を受け取り、異なる特徴検出器を学習できません。異なる特徴を学習できるようにするには、重みを異なる方法で初期化することが重要です。これは、対称性を崩す小さなランダムな重みを使用することで実現します。さらに、各隠れユニットのファンインを考慮して、初期重みに異なる大きさを持たせることは有益です。たとえば、重みを大きくするとファンインが大きいユニットが飽和する可能性がありますが、ファンインが小さいユニットには重みを小さくすることが適しています。経験則として、初期ウェイトのサイズはファンインの平方根に比例する必要があります。
入力をシフトしたり、各入力コンポーネントに定数を追加したりすると、驚くほど学習速度に大きな影響を与える可能性があります。このシフトは誤差曲面を大幅に変える可能性があるため、最急降下に役立ちます。多くの場合、トレーニング セット全体の平均値が 0 になるように各入力コンポーネントをシフトすることが推奨されます。
最急降下を使用する場合、入力のスケーリングも重要な考慮事項です。スケーリングには、入力値を変換して、各コンポーネントがトレーニング セット全体にわたって単位分散を持つことを保証し、それらの値を 1 またはマイナス 1 の典型的な値にすることが含まれます。このスケーリングにより、誤差曲面の動作が改善され、大きな入力コンポーネントの高い曲率と小さな入力コンポーネントの低い曲率が回避されます。
入力コンポーネントを無相関化すると、学習が大幅に容易になります。入力コンポーネント間の相関を除去することで、冗長性が削減され、学習効率が向上します。主成分分析 (PCA) は、無相関化を実現するために一般的に使用される手法です。これには、小さな固有値を持つコンポーネントを削除し、残りのコンポーネントを固有値の平方根で割ることによってスケーリングすることが含まれます。このプロセスにより、線形システムの円形誤差曲面が得られ、学習が簡素化されます。
次に、ニューラル ネットワークのトレーニングで遭遇するいくつかの一般的な問題に対処しましょう。過度に大きな学習率から始めると、隠れユニットが極端な状態に陥り、導関数がゼロに近づく可能性があります。これにより学習が停止し、ローカル ミニマムに陥っているような印象を与えることがよくあります。実際には、ネットワークはプラトーに閉じ込められている可能性があります。
二乗誤差またはクロスエントロピー誤差を使用して分類する場合、別の課題が発生します。最初に、ネットワークは、出力単位を 1 の予想される割合と等しくするという最良の推測戦略をすぐに学習します。ただし、この推測戦略を超えたさらなる改善は、特に深いネットワークと小さな初期重みの場合には遅くなる可能性があります。
学習率を調整するときは、適切なバランスを見つけることが重要です。学習率を下げるのが早すぎたり、下げすぎたりすると進行が妨げられる可能性がありますが、トレーニングの終わりに向かって学習率を下げると、ネットワークのパフォーマンスを安定させることができます。
次に、ミニバッチ学習を大幅に高速化するための 4 つの具体的な方法を見てみましょう。
運動量: 勾配に基づいて重みを直接変更する代わりに、運動量には勾配を使用して重み更新の速度を更新することが含まれます。この勢いにより、ネットワークは以前の勾配を記憶できるようになり、学習の加速に役立ちます。
適応学習率: 各パラメータに個別の学習率を割り当て、経験的測定に基づいてゆっくりと調整することで、学習を強化できます。勾配の符号が変化し続け、発振を示している場合、学習率は低下します。符号が一貫したままであり、進歩を示している場合、学習率は増加します。
RMSprop: この方法には、重みの更新を最近の勾配の大きさの移動平均で割ることが含まれます。勾配の大きさに基づいて重みの更新を動的に調整し、さまざまな勾配範囲を効果的に処理できるようにします。 RMSprop は、Rprop をミニバッチに適応させたものです。
講義 6.4 — 各接続の適応学習率
講義 6.4 — 各接続の適応学習率 [機械学習のためのニューラル ネットワーク]
このビデオでは、適応学習率として知られる手法について説明します。この手法は、1980 年代後半にロビー ジェイコブスによって最初に開発され、その後他の研究者によって改良されました。適応学習率の背後にある概念は、更新中にその接続の重みがどのように動作するかについての経験的観察に基づいて、ニューラル ネットワーク内の各接続に一意の学習率を割り当てることです。このアプローチでは、重みの勾配が反転し続ける場合は学習率を下げ、勾配が一定のままの場合は学習率を増やすことで、学習プロセスを微調整することができます。
接続ごとに個別の適応学習率を持つことは、特に深層多層ネットワークにおいて有利です。このようなネットワークでは、学習率が異なる重み間、特に異なる層の重み間で大きく異なる可能性があります。さらに、エラーを修正するために複数の受信重みを調整する際のオーバーシュート効果のサイズを決定するユニットの煽りにも、異なる学習率が必要です。ファンインが大きくなると、オーバーシュート効果がさらに大きくなる可能性があるため、それに応じて学習率を調整する必要があります。
適応学習率を実装するには、グローバル学習率を手動で設定し、各重みに固有のローカル ゲインを乗算します。最初に、ローカル ゲインはすべての重みに対して 1 に設定されます。次に、重みの更新は、学習率にローカル ゲインとその重みの誤差導関数を乗算することによって決定されます。ローカル ゲインは、重みの勾配の符号が変わらない場合は増加し、勾配の符号が反対の場合は減少することで調整されます。振動が発生した場合に大きなゲインを急速に減衰させることを目的として、加法的増加と乗法的減少が使用されます。
勾配がランダムな場合の適応学習率の挙動を考察するのは興味深いことです。このような場合、ゲインの増加と減少の回数は同じになり、ゲイン 1 付近で推移することになります。勾配が一貫して同じ方向を向いている場合、ゲインは 1 よりも大幅に大きくなる可能性がありますが、勾配が常に反対の場合は、ゲインが 1 より大きくなる可能性があります。ゲインを 1 よりも大幅に小さくすると、渓谷を横切る振動が示されます。
適応学習率の有効性を向上させるには、ゲインのサイズを 0.1 ~ 10 または 0.01 ~ 100 などの妥当な範囲内に制限することが重要です。過度のゲインは不安定性を引き起こし、重みの収束を妨げる可能性があります。適応学習率は当初完全なバッチ学習用に設計されましたが、ミニバッチにも適用できます。ただし、サンプリング誤差の影響を最小限に抑え、勾配の符号の変化が渓谷の横断を確実に反映するようにするには、より大きなミニバッチを使用することが推奨されます。
Jacobs が提案したように、適応学習率と運動量を組み合わせることが可能です。現在の勾配と前の勾配を比較する代わりに、現在の勾配とその重みの速度 (累積勾配) の間の符号の一致が判断されます。この組み合わせにより、勢いと適応学習率の両方の利点が活用されます。適応学習率は軸に沿った効果を処理しますが、運動量は対角楕円を処理し、対角方向に素早く移動できますが、これは適応学習率だけでは達成できません。
適応学習率のパフォーマンスを向上させるために、追加の考慮事項とテクニックがいくつかあります。バランスをとり、利益が過度に大きくならないようにすることが重要です。ゲインが大きすぎると、不安定になり、十分な速度で減少できなくなり、ウェイトに損傷を与える可能性があります。
さらに、適応学習率は主に完全バッチ学習向けに設計されており、すべてのトレーニング サンプルが 1 回の反復で処理されることは注目に値します。ただし、トレーニング サンプルのサブセットが一度に処理されるミニバッチ学習にも適用できます。ミニバッチを使用する場合、サンプリング誤差の影響を軽減するために、ミニバッチのサイズを比較的大きくすることが重要です。これは、勾配の符号の変化が、ミニバッチのサンプリングのばらつきのみによるものではなく、渓谷の横断を示していることを確実に示すのに役立ちます。
適応学習率と運動量を組み合わせることで、最適化プロセスをさらに強化することもできます。現在の勾配を以前の勾配と比較する代わりに、現在の勾配とその重みの速度 (つまり、累積勾配) の間の符号の一致を評価できます。勢いを組み込むことで、勢いの利点と適応学習率の相乗効果を達成できます。適応学習率は軸に沿った効果の処理に重点を置いていますが、モメンタムは対角楕円を効果的に処理し、適応学習率だけでは難しい可能性がある斜め方向に素早く移動できます。
適応学習率は、経験的観察に基づいて各接続に個別の学習率を割り当てることにより、ニューラル ネットワークの学習プロセスを微調整する方法を提供します。彼らは、深層多層ネットワークのさまざまな重みにわたって学習率を変えるという課題に対処し、ユニットのファンニングを考慮しています。ゲインのサイズの制限、適切なミニバッチの選択、適応学習率と運動量の組み合わせなどの手法により、トレーニング プロセスをさらに最適化し、パフォーマンスと収束を向上させることができます。
講義 6.5 — Rmsprop: 勾配を正規化する
講義 6.5 — Rmsprop: 勾配を正規化する [機械学習のためのニューラル ネットワーク]
このビデオでは、最初は完全なバッチ学習用に設計された Rprop (Resilient Backpropagation) と呼ばれるメソッドが紹介されています。これは、一般的なバックプロパゲーション アルゴリズムと類似点がありますが、いくつかの違いがあります。次に、講演者は、大規模な冗長データセットに不可欠なミニバッチで動作するように Rprop を拡張する方法について説明します。 iRprop (改良型 Rprop) と呼ばれる結果として得られたメソッドは、Rprop の利点とミニバッチ学習の効率を組み合わせたものです。
Rprop の背後にある主な動機は、さまざまな勾配の大きさの課題に対処することです。ニューラル ネットワークの勾配は小さいものから非常に大きいものまであり、単一のグローバル学習率を選択することが困難になります。 Rprop は、勾配の符号のみを考慮して、すべての重みの更新が同じサイズになるようにすることでこの問題に取り組みます。このテクニックは、勾配が小さい場合でも重みの更新が大きくなる可能性があるため、勾配が小さいプラトーを回避する場合に特に役立ちます。
Rprop は、更新される重みに基づいて、勾配の符号と適応ステップ サイズを組み合わせます。勾配の大きさを考慮する代わりに、その重みに対して以前に決定されたステップ サイズに焦点を当てます。ステップ サイズは時間の経過とともに変化し、最後の 2 つの勾配の符号が一致する場合は乗算的に増加し、一致しない場合は乗算的に減少します。ステップ サイズを制限することで、ステップ サイズが大きすぎたり小さすぎたりするのを防ぎます。
Rprop は完全なバッチ学習にはうまく機能しますが、ミニバッチに適用すると課題に直面します。これは、小さい学習率を使用する場合、連続するミニバッチにわたる勾配の平均化に依存する確率的勾配降下の背後にある中心的な考え方に違反します。講演者は、Rprop が現在のステップ サイズで重みを複数回増加させ、減少させるのは 1 回だけであるため、重みの大きさが望ましくない増加につながると説明しました。
この制限を克服するために、講演者は、Rprop のミニバッチ バージョンとして RMSprop (二乗平均平方根伝播) を導入しました。 RMSprop は、勾配を分割するために使用される数値が近くのミニバッチ間で一貫していることを保証します。これは、各重みの二乗勾配の移動平均を維持することによって実現されます。二乗勾配は、減衰係数 (たとえば、0.9) を使用して重み付けされ、前の平均二乗と結合されて、更新された平均二乗が計算されます。次に、平均二乗の平方根を使用して勾配を正規化し、より効果的な学習が可能になります。
講演者は、RMSprop を各接続の運動量や適応学習率と組み合わせるなど、RMSprop をさらに開発できる可能性があると述べています。さらに、Nesterov モーメンタムや、RMSprop と類似点を共有する Yann LeCun のグループによって提案された手法など、関連する手法についても言及しています。
要約すると、講演者はデータセットの特性に基づいてさまざまな学習方法を推奨します。小規模なデータセットまたは冗長性があまりない大規模なデータセットの場合は、非線形共役勾配、LBFGS、または L-BFGS-B などの完全なバッチ手法が適しています。適応学習率または Rprop はニューラル ネットワークにも使用できます。大規模な冗長データセットの場合、ミニバッチ手法が不可欠です。最初に試してみるオプションは、勢いを伴う標準的な勾配降下法です。 RMSprop は、Rprop とミニバッチ学習の利点を組み合わせたものであるため、検討すべきもう 1 つの効果的な方法です。講演者はさらなる機能強化を検討することを提案していますが、ネットワークとタスクの性質が多様であるため、ニューラル ネットワークをトレーニングするための簡単なレシピは現時点ではありません。
講義 7.1 — シーケンスのモデリング: 概要
講義 7.1 — シーケンスのモデリング: 概要 [機械学習のためのニューラル ネットワーク]
このビデオでは、講演者がシーケンスに使用されるさまざまなタイプのモデルの概要を説明します。彼らは、前の用語に基づいてシーケンス内の次の用語を予測する自己回帰モデルについて議論することから始めます。次に、隠れユニットを組み込んだ自己回帰モデルのより複雑なバリエーションについて言及します。講演者は続けて、線形力学システムや隠れマルコフ モデルなど、隠れた状態と力学を備えたモデルを紹介します。これらのモデルは複雑ですが、その目的は、リカレント ニューラル ネットワークとシーケンス モデリングのコンテキストでのこれらのタイプのモデルとの関係を示すことです。
機械学習を使用してシーケンスをモデル化する場合、多くの場合、目標は、あるシーケンスを別のシーケンスに変換することです。たとえば、英語の単語をフランス語の単語に変換したり、音声認識のために音圧を単語の ID に変換したりします。場合によっては、別個のターゲット シーケンスが存在しない可能性があるため、入力シーケンス内の次の項が教師信号として機能することがあります。予測には自然な順序があるため、このアプローチは時系列シーケンスにとってより自然です。ただし、画像にも適用できるため、教師あり学習と教師なし学習の区別があいまいになります。
次に、講演者はリカレント ニューラル ネットワーク (RNN) に入る前に、他のシーケンス モデルのレビューを提供します。彼らは、メモリを持たない自己回帰モデルは、フィードフォワード ニューラル ネットワークに隠れユニットを追加することで拡張できると説明しています。ただし、メモリのないモデルはシーケンスのモデルの 1 つのサブクラスにすぎないことを強調しています。もう 1 つのアプローチは、情報を長期間保存できる隠れ状態と内部ダイナミクスを備えたモデルを使用することです。線形力学システムや隠れマルコフ モデルなどのこれらのモデルには、確率的推論と学習アルゴリズムが含まれます。
線形力学システムはエンジニアリングで広く使用されており、線形力学とガウス ノイズによる実数値の隠れ状態を持ちます。一方、隠れマルコフ モデルは、離散分布と確率的な状態遷移を使用します。これらは音声認識で一般的に使用され、動的プログラミングに基づいた効率的な学習アルゴリズムを備えています。
講演者は、発話の前半と後半の間で大量の情報を伝達する場合の隠れマルコフ モデルの限界について説明します。この制限は、隠し状態のメモリ容量が限られているためです。これは、隠れ状態と非線形ダイナミクスを分散させたリカレント ニューラル ネットワークの導入につながり、情報をより効率的に記憶できるようになります。
リカレント ニューラル ネットワークは、発振、ポイント アトラクターへの整定 (記憶の検索に役立ちます)、カオス的動作 (特定の状況で役立ちます) など、さまざまな動作を示すことがあります。 RNN がその隠れ状態のさまざまなサブセットを使用して複数のプログラムの実装を学習できるという考えは、当初、RNN を非常に強力にするものであると考えられていました。ただし、RNN は計算的にトレーニングが難しく、その可能性を最大限に活用するのは困難な作業でした。
このビデオでは、さまざまなシーケンス モデルの概要を示し、リカレント ニューラル ネットワークの概念を紹介し、その計算能力とトレーニングにおける課題に焦点を当てています。
講義 7.2 — バックプロパゲーションを使用した RNN のトレーニング
講義 7.2 — バックプロパゲーションを使用した RNN のトレーニング [機械学習のためのニューラル ネットワーク]
このビデオでは、リカレント ニューラル ネットワークをトレーニングするための一般的な方法である時間逆伝播アルゴリズムについて説明します。リカレント ニューラル ネットワークと、異なるタイム ステップを表す複数の層を持つフィードフォワード ニューラル ネットワークの関係を理解すれば、このアルゴリズムは簡単です。また、リカレント ニューラル ネットワークに入力と必要な出力を提供するためのさまざまなアプローチについても説明します。
この図は、3 つの相互接続されたニューロンを含む単純なリカレント ネットワークを示しています。各接続には 1 つの時間遅延があり、ネットワークは整数ティックの離散時間で動作します。リカレント ネットワークをトレーニングするには、それが本質的にフィードフォワード ネットワークを時間的に拡張したものであることを認識する必要があります。リカレント ネットワークは、時間 0 の初期状態で開始され、接続の重みを使用して時間 1 で新しい状態を生成します。このプロセスを繰り返し、同じ重みを利用して後続の新しい状態を生成します。
バックプロパゲーションは、重み制約が存在する場合の学習に効果的です。これは畳み込みネットワークでも観察されています。重み制約を組み込むには、制約を無視して通常どおり勾配を計算し、制約を維持するように勾配を変更します。たとえば、w1 を w2 と等しくしたい場合、w1 と w2 に関する導関数を取得し、それらを加算または平均し、同じ量を更新に適用することで、w1 の変化が w2 の変化と等しくなるようにします。両方の重さ。重みが最初に制約を満たしている限り、引き続き制約が満たされます。
時間によるバックプロパゲーション アルゴリズムは、リカレント ネットワークを共有重みを持つフィードフォワード ネットワークとして扱い、バックプロパゲーションを使用してトレーニングするプロセスを説明するために使用される用語です。時間領域では、順方向パスは各タイム スライスでアクティビティを蓄積し、逆方向パスはスタックからアクティビティを抽出し、各タイム ステップの誤差導関数を計算します。各タイム ステップでのこの逆方向パスにより、このアルゴリズムに時間による逆伝播という名前が付けられます。
逆方向パスの後、各重みのすべてのタイム ステップからの導関数を合計または平均します。次に、導関数の合計または平均に比例して、その重みのすべてのインスタンスを同じ量で更新します。非表示ユニットや出力ユニットなど、すべてのユニットの初期状態を指定しない場合は、追加の考慮事項が発生します。この場合、特定の状態で起動する必要があります。 1 つのアプローチは、0.5 などのデフォルト値を設定することですが、最適な結果が得られない可能性があります。あるいは、初期状態をパラメータとして扱い、初期状態に対する誤差関数の勾配に基づいて調整することで、初期状態を学習することもできます。
リカレント ニューラル ネットワークに入力を提供するにはさまざまな方法があります。すべてのユニットの初期状態、ユニットのサブセット、またはユニットのサブセットの各タイム ステップでの状態を指定できます。後者は、シーケンシャル データを処理する場合によく使用されます。同様に、リカレント ネットワークのターゲットを指定するにはさまざまな方法があります。特定のアトラクターに落ち着くように訓練したい場合は、すべてのユニットまたは複数のタイム ステップに対して希望の最終状態を指定できます。バックプロパゲーション中に各タイム ステップからの導関数を含めることで、これらの仕様を簡単に組み込むことができ、アトラクターの学習を促進できます。
バックプロパゲーション スルー タイム アルゴリズムは、リカレント ニューラル ネットワークをトレーニングするためのバックプロパゲーションを直接拡張したものです。リカレント ネットワークを共有重みを持つ拡張フィードフォワード ネットワークとして扱うことで、バックプロパゲーションを適用し、初期状態と重みを調整してトレーニングを最適化できます。リカレント ネットワークに入力と必要な出力を提供するためのさまざまな方法が存在し、逐次データの処理や特定の目的に合わせたトレーニングを柔軟に行うことができます。
講義 7.3 — RNN をトレーニングするおもちゃの例
講義 7.3 — RNN をトレーニングするおもちゃの例 [機械学習のためのニューラル ネットワーク]
このビデオでは、リカレント ニューラル ネットワーク (RNN) がおもちゃの問題をどのように解決するかを説明します。フィードフォワード ニューラル ネットワークでは簡単に達成できない RNN の機能を紹介するために、おもちゃの問題が選択されています。ここで説明する問題は 2 進加算です。 RNN が問題の解決方法を学習した後、その隠れ状態を調べて、同じ問題を解決する有限状態オートマトンの隠れ状態と比較できます。
2 つの 2 進数を加算する問題を説明するには、フィードフォワード ニューラル ネットワークをトレーニングします。ただし、このアプローチには制限があります。入力数値と出力数値の両方の最大桁数を事前に決定する必要があります。さらに、入力数値のさまざまなビットに適用される処理は一般化されません。その結果、最後の 2 桁の加算とキャリーの処理に関する知識は、特定の重みに存在します。長い 2 進数のさまざまな部分を扱う場合、知識をさまざまな重みでエンコードする必要があるため、自動的な一般化ができなくなります。
バイナリ加算のアルゴリズムは画像に示されています。アルゴリズムの状態は、真に隠蔽されていないことを除けば、隠れマルコフ モデルの状態に似ています。システムは一度に 1 つの状態で動作し、状態に入るとアクションを実行します (1 または 0 のいずれかを出力します)。ある状態にあるときに、次の列から 2 つの数値で構成される入力を受け取り、新しい状態への遷移を引き起こします。たとえば、キャリー状態にあり、1 を出力したばかりの場合、1 1 に遭遇すると、同じ状態を維持して別の 1 を出力します。ただし、1 0 または 0 1 に遭遇すると、キャリーに移行します。状態ではありますが、0 が出力されます。同様に、0 0 はキャリーなし状態になり、1 が出力されます。このプロセスはタイム ステップごとに継続します。
バイナリ加算のためのリカレント ニューラル ネットワークには、2 つの入力ユニットと 1 つの出力ユニットが必要です。各タイム ステップで 2 つの入力桁を受け取り、2 タイム ステップ前に発生した列に対応する出力を生成します。時間遅延を考慮するために、ネットワークには 2 タイム ステップの遅延が必要です。最初のステップでは入力に基づいて隠れユニットを更新し、2 番目のステップでは隠れ状態から出力を生成します。ネットワーク アーキテクチャは、相互接続された 3 つの隠れユニットで構成されていますが、学習を高速化するには、さらに多くの隠れユニットを使用することもできます。これらの隠れユニットには、さまざまな重みを持つ双方向接続があります。隠れユニット間の接続により、あるタイム ステップのアクティビティ パターンが次のタイム ステップの隠れアクティビティ パターンに影響を与えることができます。入力ユニットには隠れユニットへのフィードフォワード接続があり、ネットワークが列内の 2 桁を観察できるようになります。同様に、隠れユニットには出力ユニットへのフィードフォワード接続があり、出力の生成が可能になります。
リカレント ニューラル ネットワークが学習した内容を分析するのは興味深いです。これは、バイナリ加算の有限状態オートマトンのノードに対応する 3 つの隠れユニットで 4 つの異なるアクティビティ パターンを学習します。ニューラル ネットワークのユニットと有限状態オートマトンのノードを混同しないことが重要です。オートマトン内のノードはリカレント ニューラル ネットワークのアクティビティ ベクトルと一致します。オートマトンは、各タイム ステップで正確に 1 つのアクティビティ ベクトルを持つ RNN の隠れユニットと同様に、各時点で 1 つの状態に制限されます。 RNN は有限状態オートマトンをエミュレートできますが、表現においては飛躍的に強力です。 N 個の隠れニューロンがある場合、2 の N 乗の可能なバイナリ アクティビティ ベクトルを持つことができます。 N 乗の重みしかありませんが、表現力全体を完全には活用できない可能性があります。ボトルネックが表現にある場合、RNN は有限状態オートマトンよりも優れたパフォーマンスを発揮する可能性があります。
これは、入力ストリームに同時に実行される 2 つの別個のプロセスが含まれる場合に特に重要です。有限状態オートマトンは、並列プロセスを処理するために状態の数を指数関数的に増やす必要があります。対照的に、リカレント ニューラル ネットワークでは、隠れユニットの数を 2 倍にするだけで済みます。これにより、ユニットの数が 2 倍になり、表現できるバイナリ ベクトル状態の数が 4 倍になります。
講義 7.4 — RNN を訓練するのはなぜ難しいのですか?
講義 7.4 — RNN を訓練するのはなぜ難しいのですか? [機械学習のためのニューラルネットワーク]
このビデオでは、リカレント ニューラル ネットワーク (RNN) のトレーニングを困難にする勾配の爆発と消失の問題について説明します。研究者らは長年、RNN を使用した長期的な依存関係をモデル化することはほぼ不可能だと考えていました。ただし、この問題に対処するための効果的なアプローチが現在 4 つあります。
RNN のトレーニングがなぜ難しいのかを理解するには、RNN の前方パスと後方パスの決定的な違いを認識する必要があります。フォワード パスでは、アクティビティ ベクトルの爆発を防ぐために、ロジスティック関数のようなスカッシング関数が使用されます。 RNN の各ニューロンは、出力を 0 と 1 の間に制限するロジスティック単位を採用しています。これにより、活動レベルが制御不能に増大することが防止されます。
対照的に、バックワードパスは完全に直線的です。驚くべきことに、最終層で誤差導関数を 2 倍にすると、すべての誤差導関数もバックプロパゲーション中に 2 倍になります。勾配は、特定の点 (ビデオ内の赤い点で示されている) におけるロジスティック曲線の傾きによって決定されます。前方パスが完了すると、これらの接線の傾きが固定されます。バックプロパゲーション中、勾配は非線形性の傾きが固定されている線形システムを通って伝播します。ただし、線形システムでは、反復中に勾配が爆発したり消滅したりする問題が発生する傾向があります。重みが小さい場合、勾配は指数関数的に縮小し、無視できる程度になります。逆に、重みが大きい場合、勾配が爆発的に増加し、学習プロセスに負担がかかります。これらの問題は、特に長いシーケンスを扱う場合、フィードフォワード ニューラル ネットワークと比較して RNN でより深刻です。
重みを注意深く初期化したとしても、現在の出力と何タイムステップも前に発生したイベントとの間の依存関係を把握することは依然として困難です。 RNN は、長距離の依存関係を処理するのに苦労します。このビデオでは、リカレント ニューラル ネットワークをトレーニングしてアトラクターの状態を学習するときに、勾配がどのように消失または爆発するかについての例を示しています。初期状態の小さな違いは最終状態に変化をもたらしません (勾配の消失) が、境界近くのわずかな変化は大きな発散 (勾配の爆発) をもたらします。
これらの課題に対処するために、RNN をトレーニングするための 4 つの効果的な方法があります。 1 つ目の方法は、ネットワークのアーキテクチャを変更してメモリ機能を向上させる Long Short-Term Memory (LSTM) です。 2 番目のアプローチでは、小さな勾配を効果的に処理できる高度なオプティマイザーを使用します。ニューラル ネットワーク向けに調整されたヘシアンフリー最適化は、曲率が低い小さな勾配の検出に優れています。 3 番目の方法では、重みを注意深く初期化し、隠れた状態内に弱結合オシレーターのリザーバーを作成します。これにより、ネットワークは入力シーケンスを反響させて記憶することができます。その後、隠れユニットと出力の間の接続がトレーニングされますが、反復接続は固定されたままになります。 4 番目の方法は運動量を利用し、それをエコー状態ネットワークで使用される初期化手法と組み合わせます。この変更により、ネットワークのダイナミクスが改善され、さらに効果的になります。
これらのアプローチにより RNN をトレーニングする能力が向上し、勾配の爆発や消滅によってもたらされる課題が克服されました。
講義 7.5 — 長期短期記憶
講義 7.5 — 長期短期記憶 [機械学習のためのニューラル ネットワーク]
このビデオでは、リカレント ニューラル ネットワークをトレーニングするための「長期短期記憶」(LSTM) として知られるアプローチについて説明します。 LSTM は、情報のゲートを容易にする特殊なモジュールを使用して、ニューラル ネットワーク内に長期持続する短期記憶を作成することを目的としています。
LSTM のメモリ セルは、長期間情報を保持するように設計されています。これは、乗算相互作用を伴うロジスティック単位と線形単位で構成されます。ロジスティック「書き込み」ゲートがアクティブになると、リカレント ネットワークの残りの部分から情報がメモリ セルに入ります。 「書き込み」ゲートの状態はリカレント ネットワークによって決定されます。システムの残りの部分によって制御される「キープ」ゲートがオンである限り、情報はメモリ セルに残ります。メモリセルから情報を読み取るには、ロジスティック「読み取り」ゲートがアクティブになり、保存された値が取得され、リカレントニューラルネットワークの将来の状態に影響を与えます。
LSTM はロジスティック単位を利用します。ロジスティック単位には微分可能な特性があり、ロジスティック単位による逆伝播が可能です。これにより、ネットワークは複数の時間ステップにわたってメモリ セルを学習し、最適化することができます。メモリセルを介した逆伝播には、誤差導関数に基づいて重みを更新することが含まれ、これは数百のタイムステップを通じて逆伝播することができます。
LSTM は、手書き認識などのタスクで特に成功を収めています。筆記体の手書き文字が存在する場合でも、情報を効果的に保存および取得できます。読み取りおよび書き込みタスクにおいて他のシステムと比較して優れたパフォーマンスを示しており、カナダ郵便局はそのような目的で LSTM ベースのシステムを使用し始めています。
ビデオでは、LSTM に基づく手書き認識システムのデモンストレーションが示されています。システムはペン座標を入力として受け取り、認識された文字を出力として生成します。一番上の行は認識された文字を表示し、2 行目は選択したメモリ セルの状態を示し、3 行目はペン座標による実際の書き込みを視覚化し、4 行目は XY 位置に逆伝播された勾配を示し、過去のイベントが文字に与えた影響を示しています。文字認識の決定。
LSTM はリカレント ニューラル ネットワークをトレーニングするための強力なアプローチであることが証明されており、シーケンシャル データの長期的な依存関係をキャプチャして利用できるようになります。