Pytorchの核心部分である自動微分化を突破! !

Pytorchの核心部分である自動微分化を突破! !

こんにちは、Xiaozhuangです!

PyTorch での自動微分演算に関して、この論文では PyTorch での自動微分の概念を紹介します。

自動微分はディープラーニング フレームワークの重要な機能であり、機械学習モデルが勾配を自動的に計算し、パラメータの更新と最適化を実行できるようにします。

PyTorch は、動的な計算グラフと自動微分化メカニズムを通じて勾配計算をシンプルかつ柔軟にする、人気のディープラーニング フレームワークです。

自動微分

自動微分化とは、機械学習フレームワークが手動で微分コードを導出したり記述したりすることなく、関数の微分 (勾配) を自動的に計算できることを意味します。これはディープラーニング モデルのトレーニングにとって非常に重要です。モデルには通常、多数のパラメーターが含まれており、手動で勾配を計算すると複雑でエラーが発生しやすい作業になるためです。 PyTorch は自動微分関数を提供するため、ユーザーは簡単に勾配を計算し、バックプロパゲーションを実行してモデル パラメータを更新できます。

ちょっとした原則

PyTorch での自動微分化は、動的計算グラフに基づいています。計算グラフは関数の計算プロセスを表すグラフ構造であり、ノードは操作を表し、エッジはデータ フローを表します。動的計算グラフの特徴は、計算グラフの構造を事前に定義するのではなく、実際の実行プロセスに応じて動的に生成できることです。

PyTorch では、ユーザーが実行するすべての操作が記録され、計算グラフが構築されます。勾配を計算する必要がある場合、PyTorch はこの計算グラフに基づいてバックプロパゲーションを実行し、損失関数の各パラメータの勾配を自動的に計算できます。動的な計算グラフに基づくこの自動導出メカニズムにより、PyTorch は柔軟でスケーラブルになり、さまざまな複雑なニューラル ネットワーク構造に適しています。

自動微分の基本操作

1. テンソル

PyTorch では、テンソルは自動微分化のための基本的なデータ構造です。テンソルは、NumPy の配列に似た多次元配列ですが、自動微分などの追加機能があります。ユーザーは torch.Tensor クラスを通じてテンソルを作成し、それに対してさまざまな操作を実行できます。

 import torch # 创建张量x = torch.tensor([2.0], requires_grad=True)

上記の例では、requires_grad=True は、このテンソルを自動的に導出することを示します。

2. 計算グラフの構築

実行される各操作は、計算グラフにノードを作成します。 PyTorch は、加算、乗算、活性化関数など、計算グラフに痕跡を残すさまざまなテンソル演算を提供します。

 # 张量操作y = x ** 2 z = 2 * y + 3

上記の例では、y と z の計算プロセスが両方とも計算グラフに記録されます。

3. 勾配計算とバックプロパゲーション

計算グラフが構築されると、.backward() メソッドを呼び出してバックプロパゲーションを実行し、勾配を自動的に計算できます。

 # 反向传播z.backward()

この時点で、x.grad にアクセスすることで x の勾配を取得できます。

 # 获取梯度print(x.grad)

4. グラデーショントラッキングを無効にする

場合によっては、特定の操作に対して勾配追跡を無効にしたいことがあります。その場合は、torch.no_grad() コンテキスト マネージャーを使用できます。

 with torch.no_grad(): # 在这个区域内的操作不会被记录在计算图中w = x + 1

5. グラデーションをクリアする

トレーニング ループでは、通常、勾配の蓄積を避けるために、各バックプロパゲーションの前に勾配をゼロにする必要があります。

 # 清零梯度x.grad.zero_()

完全な例: 線形回帰の自動微分

自動微分化のプロセスをより具体的に説明するために、単純な線形回帰の問題を考えてみましょう。線形モデルと平均二乗誤差損失関数を定義し、自動微分を使用してモデルパラメータを最適化します。

 import torch # 数据准备X = torch.tensor([[1.0], [2.0], [3.0]]) y = torch.tensor([[2.0], [4.0], [6.0]]) # 模型参数w = torch.tensor([[0.0]], requires_grad=True) b = torch.tensor([[0.0]], requires_grad=True) # 模型和损失函数def linear_model(X, w, b): return X @ w + b def mean_squared_error(y_pred, y_true): return ((y_pred - y_true) ** 2).mean() # 训练循环learning_rate = 0.01 epochs = 100 for epoch in range(epochs): # 前向传播y_pred = linear_model(X, w, b) loss = mean_squared_error(y_pred, y) # 反向传播loss.backward() # 更新参数with torch.no_grad(): w -= learning_rate * w.grad b -= learning_rate * b.grad # 清零梯度w.grad.zero_() b.grad.zero_() # 打印最终参数print("训练后的参数:") print("权重w:", w) print("偏置b:", b)

この例では、単純な線形モデルと平均二乗誤差損失関数を定義します。複数回のトレーニングの繰り返しを通じて

トレーニング サイクルでは、モデル パラメーター w と b が最適化され、損失関数が最小化されます。

やっと

PyTorch の自動微分化はディープラーニングを強力にサポートし、モデルのトレーニングをよりシンプルかつ効率的にします。

動的な計算グラフと勾配計算により、ユーザーは複雑なニューラル ネットワーク構造を簡単に定義し、自動微分による勾配降下法などの最適化アルゴリズムを実装できます。

これにより、ディープラーニングの研究者やエンジニアは、勾配計算の詳細を気にすることなく、モデルの設計と実験に集中できるようになります。

<<:  生成AIは昨年人気が高まったが、米国のIT関連の仕事の数はわずか700件しか増加しなかった

>>: 

ブログ    

推薦する

...

スマート端末AxPOS A8Sは単なるハードウェアのフラッシュではありません

AxPOS A8Sは、LianDi Commercialが2020年に構築に注力した新世代のスマート...

データサイエンスについて知っておくべきこと: 10 の重要な概念 + 22 のグラフ

01 バイアスと分散のトレードオフこれは、機械学習における最も重要な理論の中で常に上位にランクされ...

最高裁判所は顔認識に関する司法解釈を発表し、無作為の「顔スキャン」に「ノー」と述べた。

今朝(8日)、第13期全国人民代表大会第5回会議第二回全体会議が開催され、最高人民法院と最高人民検察...

AIはワールドカップ賭博の「必殺武器」となるが、その精度は「イカ・リュー」ほど高くない

[[234677]]画像出典: Visual China韓国がドイツを2対0で破った後、私の別のグル...

AIがビジネスにどのように役立つか

[[353997]]人工知能は誕生以来、成功と失敗の時期を経験し、技術の進歩も限界と放棄に直面してき...

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

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

既存のビッグデータ技術を使用して機械学習プラットフォームを構築する方法

[[210160]]機械はどのように学習するのでしょうか?人間の脳は継続的に経験を蓄積する能力があり...

...

大規模モデルの微調整には人間のデータに頼らなければならないのでしょうか? DeepMind: フィードバック付きの自己トレーニングの方が優れている

皆さんもご存知のとおり、大規模言語モデル (LLM) はディープラーニングの状況を変えつつあり、人間...

機械学習から最も恩恵を受ける4つの業界

機械学習は、将来性が最も高く、業界に最大のメリットをもたらす AI の分野です。関連レポートによると...

インターネットの前半は終わり、未来は人工知能の時代へ

少し前、ロシアのプーチン大統領は「人工知能 - 21世紀の主要技術」イベントに出席した際、人工知能ロ...

人工知能(AI)はアパレル業界をどのように変えるのでしょうか?

衣服のデザインから将来のファッショントレンドの発見、パーソナルスタイリストになること、そして消費者の...

マシンビジョンは人工知能を複数の業界に根付かせる

インターネットと人工知能が2019年全国人民代表大会で最もホットな話題の一つになることは間違いありま...

Hive でサポートされているファイル形式と圧縮アルゴリズム

[[194194]]概要正しいファイル タイプと圧縮タイプ (Textfile+Gzip、Seque...