動機: ディープラーニングをより深く理解するために、Tensorflow などのディープラーニング ライブラリを使用せずに、ニューラル ネットワークをゼロから構築することにしました。ニューラル ネットワークの内部の仕組みを理解することは、データ サイエンティストを目指す人にとって非常に重要であると私は信じています。 この記事には私が学んだことすべてが網羅されており、皆さんもそこから恩恵を受けられることを願っています。 1. ニューラルネットワークとは何ですか? ニューラル ネットワークに関する多くの入門資料では、ニューラル ネットワークを脳と比較しています。しかし、ニューラル ネットワークを、単純に入力を出力にマッピングする数学関数として理解する方が簡単だと思います。 ニューラル ネットワークは次の部分で構成されます。
下の図は、2 層ニューラル ネットワークの構造を示しています (ニューラル ネットワークの層の数を計算するときに、入力層は通常カウントされないことに注意してください)。 2層ニューラルネットワークの構造 Python を使用してニューラル ネットワークを構築するのは非常に簡単です。
1. ニューラルネットワークのトレーニング 単純な 2 層ニューラル ネットワークの出力 ŷ は次のように表すことができます。 上記の式では、重み W とバイアス b だけが出力 ŷ に影響を与える変数であることに気付いたかもしれません。 当然のことながら、重みとバイアスの適切な値によって予測の強さが決まります。入力データに基づいて重みとバイアスを微調整するプロセスをニューラル ネットワーク トレーニングと呼びます。 トレーニング プロセスの各反復は、次の手順で構成されます。
次のフローチャートはこのプロセスを示しています。 2. フォワードプロパゲーション 上の図からわかるように、フォワードパスは単なる単純な計算です。基本的な 2 層ニューラル ネットワークの場合、ニューラル ネットワークの出力は次のように計算されます。 これは、Python コードに順方向伝播関数を追加することで実現できます。簡単にするために、バイアスは 0 であると仮定します。
しかし、予測の「良さ」を評価する方法(つまり、予測が実際の値からどれだけ離れているか)がまだ必要です。ここで損失関数が登場します。 3. 損失関数 損失関数には多くの種類があり、問題の性質に応じてどの損失関数を使用するかが決まります。この記事では、単純な二乗誤差の合計を使用します。 二乗誤差の合計は、各予測値と実際の値の間の差の平均です。この差は二乗されるので、差の絶対値を測定します。 トレーニング中の目標は、損失関数を最小化する最適な重みとバイアスのセットを見つけることです。 4. バックプロパゲーション エラーを予測する方法 (損失関数) が見つかったので、重みとバイアスを更新するためにエラーを「伝播」する方法が必要です。 重みとバイアスの調整に適切な値を決定するには、重みとバイアスに関する損失関数の偏導関数を知る必要があります。 微積分の観点から見ると、関数の偏微分は関数の傾きです。 勾配降下法アルゴリズム 偏導関数がわかっている場合は、偏導関数を加算または減算するだけで重みとバイアスを更新できます (上の図を参照)。これを勾配降下法と呼びます。 ただし、損失関数の式には重みとバイアスが含まれていないため、重みとバイアスに関する損失関数の偏導関数を直接計算することはできません。したがって、計算を支援するためにチェーンルールが必要になります。 上記は、重みに関する損失関数の偏微分を計算するための連鎖律です。簡単にするために、ニューラル ネットワークの 1 つの層の偏微分のみを示します。 ふう!見た目は良くありませんが、必要な情報、つまり重みに対する損失関数の偏微分(傾き)が得られるので、それに応じて重みを調整できます。 連鎖律の式ができたので、バックプロパゲーション関数を Python コードに追加しましょう。
統合 順方向伝播と逆方向伝播の両方を実行するための完全な Python コードができたので、ニューラル ネットワークを例に適用して、そのパフォーマンスを確認できます。 私たちのニューラル ネットワークは、この関数を表す理想的な重みのセットを学習できるはずです。検査だけで重みを計算するのは簡単ではないことに注意してください。 ニューラル ネットワークを 1500 回繰り返し実行すると何が起こるかを見てみましょう。下の図は、各反復における損失関数の値を示しています。損失関数が最小値まで単調に減少していることが明確にわかります。これは、先ほど説明した勾配降下アルゴリズムと一致しています。 1500 回の反復後のニューラル ネットワークの最終予測 (出力) を見てみましょう。 1500回の反復後の予測 成功しました! フォワードプロパゲーションとバックプロパゲーションのアルゴリズムによりニューラル ネットワークのトレーニングに成功し、予測が真の値に収束しました。 予測値と実際の値の間にはまだ若干の差があることに注意してください。これは、過剰適合を防ぎ、ニューラル ネットワークをより一般化できるため望ましいことです。 3. 次のステップ 幸いなことに、私たちの探求はまだ終わっていません。ニューラル ネットワークとディープラーニングについては、まだ学ぶべきことがたくさんあります。例えば:
4. ***いくつかの考え この記事を書いている間に私は多くのことを学びました。皆さんにも役立つことを願っています。 ニューラル ネットワークの内部の仕組みを完全に理解していなくても、TensorFlow や Keras などのディープラーニング ライブラリを使用してディープ ネットワークを構築するのは簡単ですが、データ サイエンティストを目指す人にとっては、ニューラル ネットワークについてより深く理解しておくことは有益であると思います。 オリジナルリンク: https://towardsdatascience.com/how-to-build-your-own-neural-network-from-scratch-in-python-68998a08e4f6 [この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id:almosthuman2014)」によるオリジナル翻訳です] この著者の他の記事を読むにはここをクリックしてください |
<<: 人工知能は進歩しすぎているのでしょうか?この記事を読めば、誰もが人工知能の歴史を理解できる
>>: 人工知能を活用してビジネスを拡大するための 5 つの戦略
「デノボ分子設計」は材料科学の「聖杯」です。生成的ディープラーニングの導入により、この方向は大きく...
1 枚の画像を生成するのに 10 ミリ秒かかり、1 分間に 6,000 枚の画像を生成します。これ...
2016 年が過ぎ、BEEVA Labs のデータ アナリスト Ricardo Guerrero G...
[[340645]] [51CTO.com クイック翻訳] 人工知能が雇用に与える影響は、現在、さま...
IT Homeは2月9日、「高齢者のデジタル適応力に関する調査報告」によると、スマートフォンを使用...
中国共産党中央委員会と国務院がこのほど発表した「知的財産強国建設要綱(2021~2035年)」では、...
1. ユーザー操作とは何ですか?ユーザーオペレーションとは、ユーザーのライフサイクル全体を踏まえた管...
3月4日のニュース、外国メディアの報道によると、ネイチャー誌に最近発表された研究によると、中国のエン...
今月、ニュースイベント分析、マイニング、検索システム NewsMiner のデータによると、図 1 ...
従来のラベル伝播法とシンプルなモデルを組み合わせると、一部のデータセットでは現在の最適な GNN の...
[[231600]]無人スーパー、無人運転…これらはもう珍しいことではない「無人銀行」って聞いたこと...
特定の問題を解決するための最適な技術としての人工知能 (AI) に対する熱意は否定できず、注目に値し...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...