坂を下るのと同じように、損失関数の最低点を見つけます。 ニューラル ネットワークは、間違いなく、現在使用されている最も人気のある機械学習技術です。したがって、ニューラル ネットワークがどのように学習するかを理解することは非常に興味深いと思います。 ニューラル ネットワークがどのように学習するかを理解するために、次の図を見てみましょう。 各層の入力値と出力値をベクトル、重みを行列、エラーをベクトルとして表すと、一連のベクトル関数の適用にすぎないニューラル ネットワークの上図が得られます。つまり、関数はベクトルを入力として受け取り、それに対して何らかの変換を実行し、変換されたベクトルを出力します。上の図では、各線は関数を表しており、行列の乗算とエラー ベクトル、または活性化関数のいずれかになります。円はこれらの関数が作用するベクトルを表します。 たとえば、入力ベクトルから始めて、それを最初の関数に入力し、その成分の線形結合を計算し、結果のベクトルを出力として取得します。このベクトルは活性化関数への入力として使用され、シーケンスの最後の関数に到達するまでこれが続けられます。最後の関数の出力はニューラル ネットワークの予測です。 これまで、私たちが興味を持っているニューラル ネットワークがどのように出力を取得するかについて説明してきました。ニューラル ネットワークは、入力ベクトルを一連の関数に渡すだけであることがわかっています。しかし、これらの関数は重みとエラーなどのいくつかのパラメータに依存します。 ニューラル ネットワークはどのようにしてこれらのパラメータを学習し、適切な予測を行うのでしょうか? ニューラル ネットワークが実際に何であるかを思い出してみましょう。ニューラル ネットワークは実際には単なる関数であり、順番に配置された小さな関数で構成された大きな関数です。この関数には一連のパラメータがあります。最初はこれらのパラメータが何であるべきか分からず、ランダムに初期化するだけです。したがって、最初はニューラル ネットワークがランダムな値をいくつか提供します。では、どのように改善すればよいのでしょうか? 改善する前に、まずニューラル ネットワークのパフォーマンスを評価する方法が必要です。モデルの良さを測定する方法がなければ、そのパフォーマンスをどのように向上させることができるでしょうか? これを実現するには、ニューラル ネットワークの予測とデータセット内の実際のラベルを入力として受け取り、ニューラル ネットワークのパフォーマンスを表す数値を出力する関数を設計する必要があります。次に、学習問題を、関数の最小値または最大値を見つける最適化問題に変換できます。機械学習の分野では、この関数は通常、予測の精度を測定するために使用されるため、損失関数と呼ばれます。私たちの問題は、この損失関数を最小化するニューラル ネットワーク パラメータを見つけることになります。 確率的勾配降下法 あなたは微積分から関数を最小化するのが得意かもしれません。この種の問題では、通常、関数の勾配を 0 に設定し、すべての解 (臨界点とも呼ばれる) を見つけて、関数の値を最小化する解を選択します。これは世界最小値です。損失関数を最小化するために同じことを実行できるでしょうか? 実際にはできません。主な問題は、ニューラル ネットワークの損失関数が、微積分の教科書でよく見られるものほど明確で単純ではないことです。これは、数千、数十万、あるいは数百万ものパラメータを持つ非常に複雑な関数です。場合によっては、問題に対する収束した解決策を見つけることさえ不可能なことがあります。この問題は、直接的な解決策を見つけようとするのではなく、ランダムな解決策から始めて、反復ごとに少しずつ改善しようとする反復法を使用して解決されることがよくあります。最終的には、何度も繰り返した後、かなり良い解決策にたどり着くでしょう。 反復法の 1 つに勾配降下法があります。ご存知のとおり、関数の勾配は最も急な上昇の方向を示し、勾配の負数を取ると最も急な下降の方向、つまり最小値に最も速く到達できる方向を示します。したがって、各反復 (トレーニング エポックとも呼ばれます) で、損失関数の勾配を計算し、それを古いパラメータから減算して (学習率と呼ばれる係数を乗算して)、ニューラル ネットワークの新しいパラメータを取得します。 ここで、θ(シータ)はニューラル ネットワークのすべてのパラメータを含むベクトルを表します。 標準的な勾配降下法では、データセット全体を考慮して勾配が計算されます。計算コストが高くなる可能性があるため、これは通常望ましくありません。実際には、データセットはバッチと呼ばれる複数のチャンクにランダムに分割されます。バッチごとに更新が行われます。この方法は確率的勾配降下法と呼ばれます。 上記の更新ルールでは、各ステップの現在の位置で計算された勾配のみを考慮します。このように、損失関数の表面上を移動する点の軌跡は、あらゆる変化に対して非常に敏感です。場合によっては、この軌道をより堅牢にしたい場合があります。これを実現するために、物理学にヒントを得た「運動量」という概念を使用します。考え方としては、更新を行うときに、以前の更新も考慮し、それを変数 Δθ に蓄積するというものです。同じ方向にさらに更新が行われれば、私たちはその方向に「より速く」移動し、軌道を変えるような小さな変動によって脱線することはなくなります。スピードのようなものだと考えてください。 そのうち、α は負でない係数であり、古い勾配がどれだけの値を寄与できるかを決定します。 0 の場合、運動量は使用されません。 バックプロパゲーションアルゴリズム 勾配はどのように計算するのでしょうか? ニューラル ネットワークと損失関数は単なる関数の組み合わせであることを思い出してください。では、合成関数の偏微分はどうやって計算するのでしょうか? 連鎖律を使うことができます。下の写真を見てみましょう。 最初のレイヤーの重みパラメータに関する損失関数の偏微分を計算する場合は、まず最初の線形式の重みパラメータに関する偏微分を取り、次にこの結果に次の関数 (つまり、活性化関数) の前の関数の出力に関する偏微分を掛け、最後の活性化関数に関する損失関数の偏微分を掛けるまでこの操作を続けます。 2 番目のレイヤーの重みパラメータに関する導関数を計算する場合はどうすればよいでしょうか。同じプロセスを実行する必要がありますが、今回は重みパラメータに関する 2 番目の線形結合関数の導関数から開始し、その後、最初のレイヤーの重みの導関数を計算するときに、乗算する他の項も表示されます。したがって、これらの項を何度も計算するのではなく、後ろから前に向かって計算します。これがバックプロパゲーション アルゴリズムの名前の由来です。 まず、ニューラル ネットワークの出力層に関する損失関数の偏微分を計算し、次に、微分の実行積を保持してこれらの微分を最初の層に逆伝播します。導関数には 2 種類あることに注意することが重要です。1 つは関数の入力に対する導関数です。出力層から現在の層のニューロンまでのニューラル ネットワークのエラーを追跡するために、これらに導関数の積を掛けます。 2 番目のタイプの導関数はパラメータに関するもので、このタイプの導関数はパラメータを最適化するために使用します。これを他の導関数の積と掛け合わせるのではなく、勾配の一部として保存します。これは後でパラメータを更新するために使用します。 したがって、バックプロパゲーション中に、学習可能なパラメータを持たない関数 (活性化関数など) に遭遇した場合は、エラーをバックプロパゲーションするためだけに、第 1 種類の導関数のみを取得します。しかし、学習可能なパラメータを持つ関数(重みとバイアスを持つ線形結合など)に遭遇すると、2 種類の導関数を取ります。1 つ目は誤差とともに伝播される入力の導関数、2 つ目は重みとバイアスの導関数で、これらを勾配の一部として保存します。このプロセスを損失関数から進めていき、勾配に追加したい学習可能なパラメータがない最初のレイヤーに到達します。これはバックプロパゲーションアルゴリズムです。 ソフトマックス活性化とクロスエントロピー損失関数 分類タスクでは、最後の層で一般的に使用される活性化関数はソフトマックス関数です。 ソフトマックス関数は入力ベクトルを確率分布に変換します。上の図から、ソフトマックスの出力のベクトル要素はすべて正であり、その合計は 1 であることがわかります。ソフトマックス活性化を使用する場合、ニューラル ネットワークの最後の層にデータセット内のクラスの数に等しいノードを作成し、ソフトマックス活性化関数によって可能なクラスに確率分布が生成されます。したがって、ニューラル ネットワークの出力は、入力ベクトルが各可能なクラスに属する確率を示し、最も高い確率を持つクラスをニューラル ネットワークの予測として選択します。 出力層の活性化関数としてソフトマックス関数を使用する場合、損失関数としては通常、クロスエントロピー損失が使用されます。クロスエントロピー損失は、2 つの確率分布がどの程度類似しているかを測定します。入力値 x の真のラベルを確率分布として表すことができます。ここで、真のクラス ラベルの確率は 1 で、他のクラス ラベルの確率は 0 です。このラベルの表現は、ワンホットエンコーディングとも呼ばれます。次に、クロスエントロピーを使用して、ネットワークの予測確率分布が実際の確率分布にどれだけ近いかを測定します。 ここで、y は真のラベルのワンホットエンコーディング、y ハットは予測される確率分布、yi、yi ハットはこれらのベクトルの要素です。 予測された確率分布が真のラベルのワンホットエンコーディングに近い場合、損失関数の値は 0 に近くなります。そうでなければ、それらが大きく異なる場合、損失関数の値が無限大になる可能性があります。 平均二乗誤差損失関数 ソフトマックス活性化とクロスエントロピー損失は主に分類タスクに使用されますが、最後の層で適切な損失関数と活性化関数を使用するだけで、ニューラル ネットワークを回帰タスクに簡単に適応させることができます。たとえば、頼りになるクラス ラベルがないが、近似値を求める数値のリストがある場合は、平均二乗誤差 (略して MSE) 損失関数を使用できます。通常、MSE 損失関数を使用する場合、最後のレイヤーで恒等活性化 (つまり、f(x) = x) を使用します。 要約すると、ニューラル ネットワークの学習プロセスは最適化の問題に他なりません。つまり、損失関数を最小化するパラメータを見つけることが目的です。しかし、それは簡単な作業ではなく、最適化技術に関する本は数多く出版されています。さらに、最適化以外にも、特定のタスクに対してどのニューラル ネットワーク アーキテクチャを選択するかという問題もあります。 この記事がお役に立てば幸いです。お読みいただきありがとうございます。 |
<<: 土曜日に上海でお会いしましょう!アセンドアカデミー上海テクノロジーオープンデーでは、開発者がAIについて語る
>>: AI技術の発展に伴い、今後15年間でAI犯罪はピークに達するでしょうか?
[[204618]]今年のAppleカンファレンスでは、iPhone Xの「フロントバン」が観客の...
[[246000]]ビッグデータダイジェスト制作編曲:李佳、メロディー、雲周機械学習は、データ内のパ...
人工知能 (AI) を使用した予測分析により、企業は過去のデータに基づいて将来の結果を予測し、運用効...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
最近、AIビデオの分野は非常に活発になっており、OpenAIが立ち上げた大規模なビデオ生成モデルであ...
編集者 | イーフェン制作:51CTO テクノロジースタック(WeChat ID:blog)大きな続...
顧客対応チャットボットの強化から契約コミットメントの追跡、会議の議事録の最大限の活用まで、自然言語処...
[[274294]] [51CTO.com クイック翻訳] Future Today Researc...
[[350122]]一部のデバイスは、正しく動作するために適切な方向に設置する必要があります。たとえ...
Gartner, Inc. は、人工知能のデータ需要を満たすために急速に進化している分野であるデータ...