とてもかっこいいですね! Python で人工知能の最適化アルゴリズムを 5 分で理解する

とてもかっこいいですね! Python で人工知能の最適化アルゴリズムを 5 分で理解する

概要

勾配降下法は、ニューラル ネットワークでよく使われる最適化アルゴリズムの 1 つです。一般的に、誤差関数を最小化する重みとバイアスを見つけたいと考えます。勾配降下アルゴリズムは、ネットワーク全体のエラーを最小限に抑えるためにパラメータを繰り返し更新します。

勾配降下法は、最小二乗問題 (線形と非線形の両方) を解決するために使用できる反復法です。機械学習アルゴリズムのモデルパラメータ、つまり制約のない最適化問題を解決する場合、勾配降下法は最もよく使用される方法の 1 つです。もう 1 つのよく使用される方法は、最小二乗法です。損失関数の最小値を解く場合、勾配降下法を使用して段階的に反復し、最小化された損失関数とモデル パラメーター値を取得できます。逆に、損失関数の最大値を見つける必要がある場合は、勾配上昇法を使用して反復する必要があります。機械学習では、基本的な勾配降下法に基づいて、確率的勾配降下法とバッチ勾配降下法という 2 つの勾配降下法が開発されています。

アルゴリズムは、損失関数の勾配に基づいて、最小値に達するまで重みパラメータを繰り返し更新します。言い換えれば、谷に到達するまで損失関数の傾斜を下り坂に沿って進みます。基本的な考え方は図 3.8 に大まかに示されています。偏微分が負の場合、重みは増加します(図の左側)、偏微分が正の場合、重みは減少します(図の右側)42。学習率パラメータは、最小値に到達するために必要なステップ数のサイズを決定します。

図3.8 確率的勾配最小化の基本的な考え方

エラーサーフェス

局所的最小値を避けながら全体的最適値を見つけることは困難な作業です。これは、図 3.9 に示すように、誤差面には多くの山と谷があるためです。エラー サーフェスは、ある方向では大きく湾曲しているが、他の方向では平坦である可能性があります。これにより、最適化プロセスが非常に複雑になります。ネットワークが局所的最小値に陥るのを防ぐために、通常は運動量パラメータが指定されます。

図3.9 典型的な最適化問題の複素誤差面

勾配降下法を使用したバックプロパゲーションは、収束が非常に遅いか、まったく収束しないことが多いことに私は早い段階で気付きました。非常に小さなデータセットを使用して最初のニューラル ネットワークを作成したとき、バックプロパゲーション アルゴリズムを使用しました。ネットワークが解決策に収束するまでに 3 日以上かかりました。幸いなことに、私はプロセスをスピードアップするためにいくつかの措置を講じました。

これは、バックプロパゲーションに関連する学習率は比較的遅いものの、フィードフォワード アルゴリズムとしては、予測または分類の段階では非常に高速であることを示しています。

確率的勾配降下法

従来の勾配降下アルゴリズムでは、データセット全体を使用して、各反復で勾配を計算します。大規模なデータセットの場合、各パラメータの更新の前に非常に類似したサンプルの勾配が再計算されるため、冗長な計算が発生する可能性があります。確率的勾配降下法 (SGD) は、真の勾配の近似値です。各反復で、サンプルをランダムに選択してパラメータを更新し、そのサンプルに関連付けられた勾配に沿って移動します。したがって、最小値に向かう曲がりくねった勾配経路をたどります。部分的には冗長性がないため、従来の勾配降下法よりも速く解に収束する傾向があります。

確率的勾配降下法の非常に優れた理論的特性は、損失関数が凸関数43 である場合、大域的最小値が見つかることが保証されることです。

コーディング練習

理論は十分です。実際のコードに取り掛かりましょう。

1次元の問題

解決する必要のある目的関数は次の通りであると仮定します。

()=2+1f(x)=x2+1

明らかに、その最小値は =0x=0 であることが一目でわかりますが、ここではそれを実装するために勾配降下法の Python コードを使用する必要があります。

  1. #!/usr/bin/env python
  2. # -*- コーディング: utf-8 -*-
  3. 「」 「
  4. 1D問題に対する勾配降下法の例
  5. 「」 「
  6.  
  7.  
  8. def func_1d(x):
  9. 「」 「
  10. 目的関数
  11. :param x: 独立変数、スカラー
  12. :戻り値: 従属変数、スカラー
  13. 「」 「
  14. x ** 2 + 1を返す
  15.  
  16.  
  17. grad_1d(x)を定義します。
  18. 「」 「
  19. 目的関数の勾配
  20. :param x: 独立変数、スカラー
  21. :戻り値: 従属変数、スカラー
  22. 「」 「
  23. x * 2を返す
  24.  
  25.  
  26. 定義 gradient_descent_1d(grad, cur_x=0.1, 学習率=0.01,精度=0.0001, max_iters=10000):
  27. 「」 「
  28. 1次元問題に対する勾配降下法
  29. :param grad: 目的関数の勾配
  30. :param cur_x: 現在のx値、初期値はパラメータで指定できます
  31. :param learning_rate: 学習率。設定されたステップサイズと同等
  32. :param precision : 収束精度を設定する
  33. :param max_iters: 反復の最大回数
  34. :戻り値: 局所最小値 x*
  35. 「」 「
  36. iが範囲(max_iters)の場合:
  37. grad_cur = grad(cur_x)
  38. abs (grad_cur) <精度の場合:
  39. break # 勾配が0に近づくと収束したとみなされる
  40. cur_x = cur_x - grad_cur * 学習率
  41. print( "" , i, " 反復: x 値は " , cur_x)
  42.  
  43. print( "局所最小値 x =" , cur_x)
  44. cur_xを返す
  45.  
  46.  
  47. __name__ == '__main__'の場合:
  48. 勾配降下法1d(grad_1d、cur_x=10、学習率=0.2、精度=0.000001、最大反復回数=10000)

すごいですね!Python で降下を理解する!

<<:  ハルビン工科大学の修士課程の学生が11の古典的なデータ次元削減アルゴリズムをPythonで実装し、ソースコードライブラリが公開されました。

>>:  [NCTSサミットレビュー] Rong360 Ai Hui: AIモデルテストの秘密を探る

ブログ    
ブログ    
ブログ    

推薦する

米国はチップ供給を遮断、ロシアはリソグラフィー装置の再構築を決定

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

ロボット兵士はもはやSFではない

ロボット兵士はまもなく現実のものとなり、戦争作戦の遂行において人間の兵士を支援し、負傷した兵士に医療...

AI時代、私たちは将来の仕事にどう備えればいいのでしょうか?

将来のテクノロジーとそれによって可能になるかもしれない新しいタイプの仕事について多くのことが書かれて...

EasyDLは、臨床試験データの敵対的学習と複数のアルゴリズムの比較を簡単に処理します。

[51CTO.com からのオリジナル記事] 画像学習は高度なアルゴリズムであり、画像への高い適応...

4分でノーベル賞の再現に成功! CMU は化学研究を覆す GPT-4 化学者、自律コーディング、ロボット制御を開発し、Nature に発表

ChatGPT モデルは今年人気となり、予想外に化学の分野全体を覆しました。まず、Google De...

AIのジレンマをどう解決するか?

今日の大手企業が AI におけるいくつかの大きな課題をどのように克服しているか。概要:多くの企業はビ...

スマートビルディングにおける技術の陳腐化にどう対処するか?

今日の建物、ましてや将来のスマート ビルにとって、技術インフラの重要性はいくら強調してもし過ぎること...

マイクロソフトのハリー・シャムがGitHub、データの信念、そしてコンピューティングの未来について語る

1 月 20 日、マイクロソフトのグローバル エグゼクティブ バイスプレジデントであるハリー シャム...

ボストンダイナミクスのロボット犬と一緒に散歩に行きました! 「すごい」って言い続ける…(車横転シーン添付)

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

シンプルで効率的なアルゴリズムが衛星IoTを現実に近づける

背景モノのインターネット (IoT) の継続的な発展は、ここ数年にわたって現実のものとなってきました...

最後にもう一度、一貫性のあるハッシュについて長々と話します。

一貫性のあるハッシュについて見てきましたが、一貫性のないハッシュもあるはずです。私たちが普段話題にし...

ディープラーニング(CNN RNN Attention)を使用して大規模なテキスト分類問題を解決する - 概要と実践

[[188373]]著者は最近、深層学習を応用してタオバオ商品のカテゴリー予測問題を解決するプロジェ...

...

AR/AIバーチャル試着室は社会的距離の確保対策への対応

COVID-19 は小売業界に大きな混乱をもたらしましたが、新しいテクノロジーはこれまで以上に重要な...

AIは感情に関してより賢くなってきているのでしょうか?人間もそうすべきだ

人々は、一人でいるときと公共の場では行動が大きく異なりますが、基本的な性格は同じままです。観客のいな...