やさしくわかるPyTorch入門 / Easy to Learn PyTorch
by
payanotty
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
やさしくわかる PyTorch入門
Slide 2
Slide 2 text
● 名前: 早野 康太 ● お仕事: ○ 深層学習エンジニア ● 好きなこと: ○ 音ゲー ○ アニメ ○ ウマ娘 ○ 犬とか猫 発表者紹介
Slide 3
Slide 3 text
● Facebook AI Research (FAIR)により 開発された深層学習ライブラリ ● Pythonで深層学習するなら TeonsorFlowとの2択 ● モデルの構造や学習の過程を 直感的に記述することができる PyTorchについて
Slide 4
Slide 4 text
● Tensor ○ numpyとほとんど同じ感覚で使える ○ 勾配 (偏微分) に関する 情報を持っている ○ GPU上での行列計算が可能 ● nn.Module ○ 全てのモデルのベースとなる型 ○ 新しいモデルを定義するときは これを継承する Tensor型とModule型
Slide 5
Slide 5 text
● Tensor ○ numpyとほとんど同じ感覚で使える ○ 勾配 (偏微分) に関する 情報を持っている ○ GPU上での行列計算が可能 ● nn.Module ○ 全てのモデルのベースとなる型 ○ 新しいモデルを定義するときは これを継承する Tensor型とModule型
Slide 6
Slide 6 text
● nn.Module ○ パラメータをstate_dictの形式で 書き出せる ■ {‘layer1’: Tensor()...} みたいな感じ Tensor型とModule型
Slide 7
Slide 7 text
● nn.Module ○ パラメータをstate_dictの形式で 書き出せる ■ {‘layer1’: Tensor()...} みたいな感じ ○ forward ■ 入力側から変数を流す ■ モデルに合わせて自分で定義 Tensor型とModule型 forward
Slide 8
Slide 8 text
● nn.Module ○ パラメータをstate_dictの形式で 書き出せる ■ {‘layer1’: Tensor()...} みたいな感じ ○ forward ■ 入力側から変数を流す ■ モデルに合わせて自分で定義 ○ backward ■ モデルの出力テンソルに対して 実行する ■ 誤差逆伝播法で勾配を計算する Tensor型とModule型 backward forward
Slide 9
Slide 9 text
● nn.Module ○ パラメータをstate_dictの形式で 書き出せる ■ {‘layer1’: Tensor()...} みたいな感じ ○ forward ■ 入力側から変数を流す ■ モデルに合わせて自分で定義 ○ backward ■ モデルの出力テンソルに対して 実行する ■ 誤差逆伝播法で勾配を計算する Tensor型とModule型 backward forward
Slide 10
Slide 10 text
● 出力側から入力側に向かって 誤差信号を伝播させていく ● 誤差信号 = 偏微分の値 ○ (正確ではないが) ∂z/∂yとか∂y/∂xが伝播するイメージ 誤差逆伝播法 x y z backward forward
Slide 11
Slide 11 text
● PyTorchではTensor型同士の 計算が行われる際、 計算結果の中に勾配計算に 必要な情報が保持される ● 計算結果にbackwardメソッドを 実行することで 誤差逆伝播法によって 勾配が計算される 自動微分
Slide 12
Slide 12 text
● y = x2, z = Σx ij 自動微分 x y z
Slide 13
Slide 13 text
● y = x2, z = Σx ij ● z.backward() 自動微分 x y z dz/dy dy/dx
Slide 14
Slide 14 text
● y = x2, z = Σx ij ● z.backward() ● backward()を実行するとgrad内に勾配値が記録される ○ y.grad = dz/dy ○ x.grad = dz/dy * dy/dx 自動微分 x y z dz/dy dy/dx
Slide 15
Slide 15 text
● 勾配の分だけパラメータを更新する 微分→パラメータ更新 Loss Weight 勾配
Slide 16
Slide 16 text
● 勾配の分だけパラメータを更新する 微分→パラメータ更新 Loss Weight
Slide 17
Slide 17 text
● 勾配の分だけパラメータを更新する 微分→パラメータ更新 Loss Weight
Slide 18
Slide 18 text
● 勾配の分だけパラメータを更新する ○ 実際はもう少し工夫があって アルゴリズムによっていろんな 更新の仕方がある ● 勾配更新のアルゴリズム ○ SGD ○ Adam ← 大体これ使とけば間違いない ○ AdaBeliaf 微分→パラメータ更新 Loss Weight
Slide 19
Slide 19 text
● forward ○ モデルに入力を流仕込む ○ モデルの出力と正解との誤差を計算する PyTorchでの深層学習の3つのステップ
Slide 20
Slide 20 text
● forward ○ モデルに入力を流仕込む ○ モデルの出力と正解との誤差を計算する ● backward ○ 誤差逆伝播で勾配を計算する PyTorchでの深層学習の3つのステップ
Slide 21
Slide 21 text
● forward ○ モデルに入力を流仕込む ○ モデルの出力と正解との誤差を計算する ● backward ○ 誤差逆伝播で勾配を計算する ● step ○ 勾配の分だけパラメータを更新する PyTorchでの深層学習の3つのステップ
Slide 22
Slide 22 text
● 手書き文字画像データ(MNIST)の分類に PyTorchでチャレンジしてみます ○ Google Colabのノートブック PyTorch実践 ラベル = 5
Slide 23
Slide 23 text
● PyTorchの特徴 ○ 自動微分の機能により forward → backwardの流れを直感的に記述することができる ○ (今回は触れなかったが) ■ GPU上での計算を高速化する手法に対応している ■ モデルのレイヤーごとに学習率をいじれるなど 柔軟性の高いモデル設計が可能 ● Google Colaboratoryで結構カンタンに試せちゃうので 興味ある方はぜひ触ってみてください さいごに