やさしくわかるPyTorch入門 / Easy to Learn PyTorch
by
payanotty
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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で結構カンタンに試せちゃうので 興味ある方はぜひ触ってみてください さいごに