Image

PyTorchの自動微分について使い方をわかりやすく解説!サンプルコードも紹介!

PythonのPyTorchでの自動微分の使い方を解説しました。自動微分はニューラルネットワークの最適なパラメータを計算するために用いられます。入力と出力の誤差を最小にすることを目的としています。ちなみにサンプルコードも紹介しています。

PyTorchの自動微分ってどんなもの?

今回はPyTorchの自動微分について触れていきます

自動微分の定義の基本を抑えて機械学習をできるようにしていきましょう。

段々と機械学習っぽくなってきました。

どんどんいきましょう!



目次

01. PyTorchの自動微分とは

02. PyTorchで自動微分をしてみる

03. まとめ


01. PyTorchの自動微分とは


自動微分とは、ニューラルネットワークの最適なパラメータを算出するために、入出力の誤差を最小となるようにします

具体的には損失関数というものが最小となるようなパラメータを算出します。

その際に必要なのが微分でありautogradというパッケージを用いて行います。

まとめると実際の正しいデータとの差分を0になるように学習させるために微分を使って差分を細分化し、0へ近づけるといったイメージです

高校で微分とおさらばした人も機械学習をするなら今一度イメージくらいはできるようにしておくと理解がスムーズかも知れません。

PyTorchにはautogradというパッケージがあり、テンソルを使用したあらゆる計算を自動的に微分する機能を持ち合わせています。

テンソルの属性にrequire_gradというものがあり、それをTrueにすることで自動微分を有効にすることができます。


01. PyTorchで自動微分をしてみる



import torch
a = torch.tensor(3, requires_grad=True, dtype=torch.float64)
b = torch.tensor(4, requires_grad=True, dtype=torch.float64)
x = torch.tensor(5, requires_grad=True, dtype=torch.float64)
y = a*x + b
print(y)
>>>tensor(19., dtype=torch.float64, grad_fn=<AddBackward0>)
## 出力結果
y.backward()
print(a.grad)
print(b.grad)
print(x.grad)
>>>tensor(5., dtype=torch.float64)
>>>tensor(1., dtype=torch.float64)
>>>tensor(3., dtype=torch.float64)


上記はPyTorchで実際にyをaやbやxで微分する処理です。

この計算では微分をして勾配を求めています。

微分は傾き、すなわち微小区間での変化率を求める処理です

微分についてはイメージを押さえておきましょう。

データの誤差を無くすために微分を使う

ということもついでに覚えておきましょう。

このように簡単にPyTorchで自動微分を行うことができます。

自動微分はPyTorchの機械学習において基本的に毎回使用するので流れを覚えておきましょう。


04. まとめ


お疲れ様でした。

ここまで読んでいただきありがとうございます。

今回はPyTorchで簡単な自動微分を行ってみました。

わからないことも多くあると思いますが進めていくにつれて慣れていくでしょう。