Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
「深層学習による自然言語処理」読書会 第2章2.1~2.5
Search
Kei Shiratsuchi
PRO
August 24, 2017
Technology
0
480
「深層学習による自然言語処理」読書会 第2章2.1~2.5
「深層学習による自然言語処理」読書会
第2章2.1~2.5
Kei Shiratsuchi
PRO
August 24, 2017
Tweet
Share
More Decks by Kei Shiratsuchi
See All by Kei Shiratsuchi
モノリスとマイクロサービスの橋渡し - ベターからモアベターへ
kei_s
PRO
0
110
なぜ リアーキテクティング専任チームを作ったのか
kei_s
PRO
2
1.6k
実践 Rails アソシエーションリファクタリング / Rails association refactoring in practice
kei_s
PRO
8
9.4k
「Go言語でつくるインタプリタ」を Rust で移植してみた / "Write An Interpreter In Go" In Rust
kei_s
PRO
1
2k
Rust言語で作るインタプリタ / Write An Interpreter In Rust
kei_s
PRO
2
730
育児休業のご報告と、育児グッズとしてのスマートスピーカー / Parental Leave and SmartSpeaker
kei_s
PRO
0
870
「深層学習による自然言語処理」読書会 第6章2.7
kei_s
PRO
0
470
「深層学習による自然言語処理」読書会 第5章5.1
kei_s
PRO
0
480
最近個人的に気になるプログラミング言語おさらい Ruby, Python, Go, Rust, Julia
kei_s
PRO
0
1.1k
Other Decks in Technology
See All in Technology
手を動かしながら学ぶデータモデリング - 論理設計から物理設計まで / Data modeling
soudai
PRO
24
5.1k
Flutterで実装する実践的な攻撃対策とセキュリティ向上
fujikinaga
2
390
仕様は“書く”より“語る” - 分断を超えたチーム開発の実践 / 20251115 Naoki Takahashi
shift_evolve
PRO
1
620
Design and implementation of "Markdown to Google Slides" / phpconfuk 2025
k1low
1
400
エンジニア採用と 技術広報の取り組みと注力点/techpr1112
nishiuma
0
140
ググるより、AIに聞こう - Don’t Google it, ask AI
oikon48
0
870
お試しで oxlint を導入してみる #vuefes_aftertalk
bengo4com
2
1.5k
ソフトウェア開発現代史: 55%が変化に備えていない現実 ─ AI支援型開発時代のReboot Japan #agilejapan
takabow
4
3.1k
マイクロリブート ~ACEマインドセットで実現するアジャイル~
sony
1
340
クレジットカードの不正を防止する技術
yutadayo
16
7.3k
AIでテストプロセスを自動化しよう251113.pdf
sakatakazunori
0
130
ステートレスなLLMでステートフルなAI agentを作る - YAPC::Fukuoka 2025
gfx
8
1.2k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
192
56k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Scaling GitHub
holman
463
140k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
A Tale of Four Properties
chriscoyier
162
23k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.3k
Become a Pro
speakerdeck
PRO
29
5.6k
Statistics for Hackers
jakevdp
799
220k
We Have a Design System, Now What?
morganepeng
54
7.9k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8k
Transcript
ʮਂֶशʹΑΔࣗવݴޠॲ ཧʯಡॻձ ୈষd ⽩⼟ 慧 株式会社レトリバ © 2017 Retrieva, Inc.
ࣗݾհ • 名前:⽩⼟ 慧 • 年齢:33歳 • 所属:株式会社レトリバ(2016年4⽉〜) • 職業:エンジニア
• ⾃然⾔語処理:⼤学の授業レベル。 • 深層学習:⼊社してから少しだけ案件で。 © 2017 Retrieva, Inc. 2
ൣғ • 2. ニューラルネットの基礎 • 2.1 教師あり学習 • 2.2 順伝搬型ニューラルネット
• 2.3 活性化関数 • 2.4 勾配法 • 2.5 誤差逆伝搬法 © 2017 Retrieva, Inc. 3
χϡʔϥϧωοτͷجૅ • この章で紹介すること • 機械学習とは何か • 誤差逆伝搬法 • 広く使われているニューラルネットの構造(次回) ©
2017 Retrieva, Inc. 4
ڭࢣ͋Γֶश • 深層学習は、ニューラルネットを関数近似に使う⼿法 • ニューラルネットはあくまでもデータから関数を学習するため のモデル © 2017 Retrieva, Inc.
5
ڭࢣ͋Γֶशͷఆٛ • 教師あり学習では、訓練データを使って所望の予測モデルを学 習する。 • 訓練データ:正解事例の集合 • 式(2.1):⼊⼒変数x(n)と出⼒変数y(n)について、損失を最⼩化す るようなパラメータθを求める⼿続き •
損失: x(n), y(n) を損失関数にかけた結果の平均値 • つまり学習とは、最適化アルゴリズムを使って、ある関数を最 ⼩化するパラメータ値を求める、最適化問題である © 2017 Retrieva, Inc. 6
ଛࣦؔ • 損失関数を何にするかも設計要素 • fθ (x,y) は予測モデル。本書ではニューラルネットとする • 交差エントロピー損失関数 •
真の分布とモデルとの距離を表す交差エントロピーを、訓練データで 近似する • ヒンジ損失関数 • 正解y(n)と、正解を除いた中で最もスコアが⼤きい "だけを使って損失 を定義する • これを⽤いて学習するアルゴリズムをサポートベクトルマシンと呼ぶ © 2017 Retrieva, Inc. 7
ڭࢣ͋Γֶशʹ༻͍Δσʔλ • 訓練データに対してだけ正しく予測できても意味がない • 本当は世の中全てのデータを訓練データとしたいが、不可能 • 最適化問題と違い、教師あり学習は訓練データに最適化できれば良い わけではない • 評価データと開発データを⽤意する
• 評価データ:学習の最後に、モデルを評価するための正解事例 • 開発データ:学習の過程で使う正解事例 © 2017 Retrieva, Inc. 8
ॱൖܕχϡʔϥϧωοτɺϞσϧ • 最も単純な構造である順伝搬型ニューラ ルネット(FFNN) • ⾏列Wをかけてベクトルbを⾜す、という 作業を層ごとに繰り返す • 活性化関数a(l)を通す •
パラメータθは、{W(1),…W(l),b(1)…b(l)}と なる • 隠れ状態ベクトルの次元数、または層の 数が多いと、⼊⼒データを細かく分類で きる • つまり深いニューラルネットは表現⼒が⾼ いと⾔われる © 2017 Retrieva, Inc. 9 o h(2) h(1) h(0) = x h(1) = a(1)(W(1)x +b(1)) h(2) = a(2)( W(2)h(1) +b(2)) o = W(3)h(2) +b(3)
׆ੑԽؔ • 活性化関数として⾮線形関数を適⽤する • sigmoid • tanh • ReLU •
勾配法と組み合わせるため、微分可能な関数を選ぶ • 活性化関数と性能の関係は明確になっていないので、実験的に選ぶことが多 い • ⾮線形関数を通さない2層のFFNNは、等価な1層のFFNNで構成でき てしまう • 深い構造を有効活⽤するため、⾮線形な活性化関数を適⽤する必要がある © 2017 Retrieva, Inc. 10
ޯ๏ɺޯ๏ʹΑΔؔ࠷খԽ • 2.1節の通り、学習はL(θ) の最⼩化 • ニューラルネットでは勾配法による最適化がよく使われる • パラメータθを下記の式で更新していく • θ(k+1)=θ(k)-η∂L(θ(k))
• 関数Lをθ(k)において偏微分を取り線形近似し、最も減る⽅向(最急降 下⽅向)に向かって、ηぶんパラメータを動かす © 2017 Retrieva, Inc. 11
ϛχόονԽʹΑΔ֬తޯ๏ • 式(2.1)では訓練データのすべての事例を利⽤している。バッチ法と呼ぶ • ⼀回の評価に時間がかかりすぎる • 最急降下⽅向は局所的な性質なので、雑に早く計算してパラメータ更新回数を増や した⽅が、早く良い解にたどり着ける • 事例からランダムに選んで勾配法を実⾏する確率的勾配法がよく使われる
• 1事例だけ使う(オンライン法)だとパラメータ更新回数は多くできるが、 偏微分のバラツキが⼤きい • いいとこ取りをして、事例からランダムに複数選ぶ、ミニバッチ法を⽤い る • 選ぶ個数:バッチサイズ • 全データ数/バッチサイズ:1エポック © 2017 Retrieva, Inc. 12
ޡࠩٯൖ๏ɺχϡʔϥϧωοτͷඍ • 誤差逆伝搬法:ニューラルネットにおいて⽬的関数の偏微分を 計算するアルゴリズム • ⾃分で実装する必要はあまりない • ニューラルネットを合成関数と捉え微分の連鎖律を使うと、 ニューラルネットの微分はそれぞれの導関数の積で表せる ©
2017 Retrieva, Inc. 13
ਂ͍χϡʔϥϧωοτͷ͠͞ • 隠れ層1層を持つニューラルネットをスコア関数 f とすると、 f(x,y) = f(o)(f(1)(x), y)=w y
(o)w(1)x • 損失関数にかけた l(f(o)(f(1)(x), y)) を⽬的関数とすると、f(1)のパラ メータw(1)における微分は(式2.31)、 ' ()) • これは関数評価とは逆⽅向に誤差(損失関数の⼊⼒による微分)が かけられている • 誤差が関数評価とは逆⽅向に伝達されることになるので誤差逆伝搬法 © 2017 Retrieva, Inc. 14
ਂ͍χϡʔϥϧωοτͷ͠͞ • 偏微分の計算は、⽬的関数の計算グラフを逆に辿っていく © 2017 Retrieva, Inc. 15 ⼊ ⼒
︵ 訓 練 デ タ ︶ ⾏ 列 活 性 化 関 数 ⾏ 列 活 性 化 関 数 ⾏ 列 損 失 関 数 順伝搬の計算 偏微分の計算
ਂ͍χϡʔϥϧωοτͷ͠͞ • 隠れ層を2つに増やすと(式2.33)、 ' ) (,)(-) • 層が増えると積の回数が増える • パラメータが⼤きいと、微分の値が⾮常に⼤きくなる:勾配爆発
• パラメータが⼩さいと、微分の値が⾮常に⼩さくなる:勾配消失 • 層を増やすと表現⼒は⼤きくなるが、学習が困難になる • ResNetのような⼿法を⽤いると、1000層も可能になる © 2017 Retrieva, Inc. 16