とてもかっこいいですね! 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モデルテストの秘密を探る

ブログ    
ブログ    
ブログ    

推薦する

AppleはAI競争で遅れをとり、市場価値ランキングはAmazon、Google、Microsoftに追い抜かれる可能性も

米国現地時間9月8日木曜日、投資会社ニーダム・セキュリティーズは、アマゾン、グーグル、マイクロソフト...

2019 年の人工知能のトレンド トップ 25!一つの記事が未来を予見する

人工知能の次なる展開は?先週、有名な組織 CBinsights のアナリストがさまざまな業界を分析し...

...

中国でドローン配送用の商用「操縦免許」が発行されるまでにどれくらいの時間がかかるのでしょうか?

[[264191]]少し前、米国で初となるドローン配送の「操縦免許」が正式に発行された。これを取得...

人間は知能を持っているのに、なぜモノのインターネットには人工知能が必要なのでしょうか?

IoT にインテリジェンスが必要なのはなぜですか?人工知能は登場しましたが、具体的な概念はなく、ま...

TuSimpleはAIと自動運転に注力し、時価総額84億ドル超でナスダックに正式に上場した。

海外メディアの報道によると、人工知能(AI)と自動運転の企業TuSimpleが株式コード「TSP」で...

AIが髪の毛に至るまで肖像画を生成!北京大学卒業生の最新研究が2.8千個の星を獲得

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

人工知能は、電力網とユビキタス電力のIoTの構築と開発にとって重要な方向性となるだろう

[[285204]]現在、モバイルインターネット、ビッグデータ、スーパーコンピューティングなどの新し...

NLP ビッグモデルを時系列に適用するにはどうすればよいでしょうか? 5つの方法をまとめました!

最近、カリフォルニア大学は時系列の大規模言語モデルに関する研究のレビューを発表しました。この記事では...

自己教師あり学習の概要と3つの主要分野における現状

近年、教師あり学習によるディープラーニングも大きな成功を収めています。画像分類から言語翻訳まで、その...

マイクロソフトによるニュアンスの買収が大きな意味を持つ理由

[[394293]]マイクロソフトは最近、音声認識と人工知能による会話サービスを主に提供するNuan...

新しい無料プログラミングツール! Copilot の 2 倍の速度と 20% の精度向上 | Feishi Technology 発行

Microsoft GitHub Copilot を数秒で上回る国産プログラミング ツール。どれくら...

...

中国の人工知能都市競争で最も速いのはどの都市でしょうか?

産業発展状況の分析特許出願件数世界第1位[[332768]]我が国は、新たな科学技術革命と産業変革の...