Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Chainer使ってみた
@kenmatsu4
2015.8.5
機械学習プロフェッショナルシリーズ輪読会 #4
Lightning Talk  
自己紹介
・Twitterアカウント
   @kenmatsu4
・Qiitaでブログを書いています(統計、機械学習、Python等)
   http://qiita.com/kenmatsu4
   (2500 contributionを超え...
2015.6.9
Deep Learning Framework Chainer Release!
特徴
• All Pythonで記載ができるので、設定ファイル等
のフォーマットを覚える必要がない。
• インストールが簡単
pip install chainer
王道、MNIST手書き数字で試す。
モデルは入力784 units、出力10 units
# Prepare multi-layer perceptron model
# 多層パーセプトロンモデルの設定
# 入力 784次元、出力 10次元
model = FunctionSet(
l1=F.Linear(784, n_units)...
# Prepare multi-layer perceptron model
# 多層パーセプトロンモデルの設定
# 入力 784次元、出力 10次元
model = FunctionSet(
l1=F.Linear(784, n_units)...
# ニューラルネットの構造
def forward(x_data, y_data, train=True):
x, t = Variable(x_data), Variable(y_data)
h1 = F.dropout(F.relu(mod...
# ニューラルネットの構造
def forward(x_data, y_data, train=True):
x, t = Variable(x_data), Variable(y_data)
h1 = F.dropout(F.relu(mod...
基本クラスの一つです
http://docs.chainer.org/en/latest/reference/core/variable.html#variable
基本クラスの一つです
http://docs.chainer.org/en/latest/reference/core/variable.html#variable
このクラスに、データ、パラメータ、
モデルの構造等を持たせて、
誤差逆伝播を行...
# ニューラルネットの構造
def forward(x_data, y_data, train=True):
x, t = Variable(x_data), Variable(y_data)
h1 = F.dropout(F.relu(mod...
コード:順伝播(POINT: relu関数)
relu(x) = max(0, x)
# ニューラルネットの構造
def forward(x_data, y_data, train=True):
x, t = Variable(x_data), Variable(y_data)
h1 = F.dropout(F.relu(mod...
コード:順伝播(POINT: dropout関数)
x2#
x783
x784
x1
x0
z10u10
z1u1
z2u1
z9u9
z1000u1000
z999u999
u1##z1
u2##z2
z0
z1000u1000
z999u9...
コード:順伝播(POINT: dropout関数)
x2#
x784
x0
z10u10
z1u1
z2u1
z9u9
z999u999
u1##z1
z0
z1000u1000
u1##z1
z0
# ニューラルネットの構造
def forward(x_data, y_data, train=True):
x, t = Variable(x_data), Variable(y_data)
h1 = F.dropout(F.relu(mod...
コード:順伝播(POINT: softmax関数)
yk = zk = fk(u) =
exp(uk)
PK
j exp(uj)
En =
X
k
dk log
exp(uk)
PK
j exp(uj)
!
交差エントロピー関数
ソフトマックス...
# Setup optimizer
optimizer = optimizers.Adam()
optimizer.setup(model.collect_parameters())
コード:Optimizerの設定
Optimizerで勾配法...
for epoch in xrange(1, n_epoch+1):
perm = np.random.permutation(N)
# 0∼Nまでのデータをバッチサイズごとに使って学習
for i in xrange(0, N, batchs...
train_loss.append(loss.data)
train_acc.append(acc.data)
sum_loss += float(cuda.to_cpu(loss.data))
* batchsize
sum_accuracy...
#evaluation
#テストデータで誤差と、正解精度を算出し汎化性能を確認
sum_accuracy = 0
sum_loss = 0
for i in xrange(0, N_test, batchsize):
x_batch = x_t...
sum_loss += float(cuda.to_cpu(loss.data))
* batchsize
sum_accuracy += float(cuda.to_cpu(acc.data))
* batchsize
# テストデータでの誤...
結果
結果
間違ったのはこの1つだけ。
でも、9にも見えるので仕方ない!?
結果:パラメーター の可視化w
Autoencoder
概要
時間がないので結果だけ・・・
活性化関数 中間層数 Dropout ノイズ付加
Sigmoid 1000 あり なし
誤差の推移:20回しくらいで大体収束
活性化関数 中間層数 Dropout ノイズ付加
Sigmoid 1000 あり なし
出力結果:ほとんど復元できている
活性化関数 中間層数 Dropout ノイズ付加
Sigmoid 1000 あり なし
第一層 w
(1)
ji の可視化
活性化関数 中間層数 Dropout ノイズ付加
Sigmoid 1000 あり なし
第一層 w
(1)
ji の可視化
結構、数字のエッジ等、
特徴らしきものを捉えられている
活性化関数 中間層数 Dropout ノイズ付加
Sigmoid 1000 あり なし
第二層 の可視化w
(2)
ji
詳細はこちらをご覧ください!
• 【機械学習】ディープラーニング フレームワーク
Chainerを試しながら解説してみる。
http://qiita.com/kenmatsu4/items/7b8d24d4c5144a686412
• 【ディー...
また、Chainerの仕組みについては作者の方が非常に
わかりやすくまとめられているので、ぜひご参考ください!
http://www.slideshare.net/beam2d/chainer-atfpgax7
Thanks
• Chainer Homepage
http://chainer.org
• Chainer Github page
https://github.com/pfnet/chainer
• Chainer Document
htt...
Nächste SlideShare
Wird geladen in …5
×

「深層学習」勉強会LT資料 "Chainer使ってみた"

12.613 Aufrufe

Veröffentlicht am

機械学習プロフェッショナルシリーズの「深層学習」勉強会のLTスライドです。

Veröffentlicht in: Daten & Analysen
  • Dating for everyone is here: ❶❶❶ http://bit.ly/2Q98JRS ❶❶❶
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Sex in your area is here: ❶❶❶ http://bit.ly/2Q98JRS ❶❶❶
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD FULL MOVIE, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... ,DOWNLOAD FULL. MOVIE 4K,FHD,HD,480P here { https://tinyurl.com/yybdfxwh }
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Hi there! Essay Help For Students | Discount 10% for your first order! - Check our website! https://vk.cc/80SakO
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

「深層学習」勉強会LT資料 "Chainer使ってみた"

  1. 1. Chainer使ってみた @kenmatsu4 2015.8.5 機械学習プロフェッショナルシリーズ輪読会 #4 Lightning Talk  
  2. 2. 自己紹介 ・Twitterアカウント    @kenmatsu4 ・Qiitaでブログを書いています(統計、機械学習、Python等)    http://qiita.com/kenmatsu4    (2500 contributionを超えました!) ・趣味    - バンドでベースを弾いたりしています。    - 主に東南アジアへバックパック旅行に行ったりします    (カンボジア、ミャンマー、バングラデシュ、新疆ウイグル自治区 etc) 旅行の写真 : http://matsu-ken.jimdo.com Twitterアイコン
  3. 3. 2015.6.9 Deep Learning Framework Chainer Release!
  4. 4. 特徴 • All Pythonで記載ができるので、設定ファイル等 のフォーマットを覚える必要がない。 • インストールが簡単 pip install chainer
  5. 5. 王道、MNIST手書き数字で試す。
  6. 6. モデルは入力784 units、出力10 units
  7. 7. # Prepare multi-layer perceptron model # 多層パーセプトロンモデルの設定 # 入力 784次元、出力 10次元 model = FunctionSet( l1=F.Linear(784, n_units), l2=F.Linear(n_units, n_units), l3=F.Linear(n_units, 10)) コード:モデル定義
  8. 8. # Prepare multi-layer perceptron model # 多層パーセプトロンモデルの設定 # 入力 784次元、出力 10次元 model = FunctionSet( l1=F.Linear(784, n_units), l2=F.Linear(n_units, n_units), l3=F.Linear(n_units, 10)) コード:モデル定義(POINT:入出力定義)
  9. 9. # ニューラルネットの構造 def forward(x_data, y_data, train=True): x, t = Variable(x_data), Variable(y_data) h1 = F.dropout(F.relu(model.l1(x)),            train=train) h2 = F.dropout(F.relu(model.l2(h1)),         train=train) y = model.l3(h2) # 多クラス分類なので誤差関数としてソフトマックス関数の # 交差エントロピー関数を用いて、誤差を導出 return F.softmax_cross_entropy(y, t), F.accuracy(y, t) コード:順伝播
  10. 10. # ニューラルネットの構造 def forward(x_data, y_data, train=True): x, t = Variable(x_data), Variable(y_data) h1 = F.dropout(F.relu(model.l1(x)),            train=train) h2 = F.dropout(F.relu(model.l2(h1)),         train=train) y = model.l3(h2) # 多クラス分類なので誤差関数としてソフトマックス関数の # 交差エントロピー関数を用いて、誤差を導出 return F.softmax_cross_entropy(y, t), F.accuracy(y, t) コード:順伝播(POINT: Variableクラス)
  11. 11. 基本クラスの一つです http://docs.chainer.org/en/latest/reference/core/variable.html#variable
  12. 12. 基本クラスの一つです http://docs.chainer.org/en/latest/reference/core/variable.html#variable このクラスに、データ、パラメータ、 モデルの構造等を持たせて、 誤差逆伝播を行います。
  13. 13. # ニューラルネットの構造 def forward(x_data, y_data, train=True): x, t = Variable(x_data), Variable(y_data) h1 = F.dropout(F.relu(model.l1(x)),            train=train) h2 = F.dropout(F.relu(model.l2(h1)),         train=train) y = model.l3(h2) # 多クラス分類なので誤差関数としてソフトマックス関数の # 交差エントロピー関数を用いて、誤差を導出 return F.softmax_cross_entropy(y, t), F.accuracy(y, t) コード:順伝播(POINT: relu関数)
  14. 14. コード:順伝播(POINT: relu関数) relu(x) = max(0, x)
  15. 15. # ニューラルネットの構造 def forward(x_data, y_data, train=True): x, t = Variable(x_data), Variable(y_data) h1 = F.dropout(F.relu(model.l1(x)),            train=train) h2 = F.dropout(F.relu(model.l2(h1)),         train=train) y = model.l3(h2) # 多クラス分類なので誤差関数としてソフトマックス関数の # 交差エントロピー関数を用いて、誤差を導出 return F.softmax_cross_entropy(y, t), F.accuracy(y, t) コード:順伝播(POINT: dropout関数)
  16. 16. コード:順伝播(POINT: dropout関数) x2# x783 x784 x1 x0 z10u10 z1u1 z2u1 z9u9 z1000u1000 z999u999 u1##z1 u2##z2 z0 z1000u1000 z999u999 u1##z1 u2##z2 z0
  17. 17. コード:順伝播(POINT: dropout関数) x2# x784 x0 z10u10 z1u1 z2u1 z9u9 z999u999 u1##z1 z0 z1000u1000 u1##z1 z0
  18. 18. # ニューラルネットの構造 def forward(x_data, y_data, train=True): x, t = Variable(x_data), Variable(y_data) h1 = F.dropout(F.relu(model.l1(x)),            train=train) h2 = F.dropout(F.relu(model.l2(h1)),         train=train) y = model.l3(h2) # 多クラス分類なので誤差関数としてソフトマックス関数の # 交差エントロピー関数を用いて、誤差を導出 return F.softmax_cross_entropy(y, t), F.accuracy(y, t) コード:順伝播(POINT: softmax関数)
  19. 19. コード:順伝播(POINT: softmax関数) yk = zk = fk(u) = exp(uk) PK j exp(uj) En = X k dk log exp(uk) PK j exp(uj) ! 交差エントロピー関数 ソフトマックス関数
  20. 20. # Setup optimizer optimizer = optimizers.Adam() optimizer.setup(model.collect_parameters()) コード:Optimizerの設定 Optimizerで勾配法を選択する。 今回はAdamを使用。 http://ja.scribd.com/doc/260859670/30minutes-Adam Adamの参考
  21. 21. for epoch in xrange(1, n_epoch+1): perm = np.random.permutation(N) # 0∼Nまでのデータをバッチサイズごとに使って学習 for i in xrange(0, N, batchsize): x_batch = x_train[perm[i:i+batchsize]] y_batch = y_train[perm[i:i+batchsize]] # 勾配を初期化 optimizer.zero_grads() # 順伝播させて誤差と精度を算出 loss, acc = forward(x_batch, y_batch) # 誤差逆伝播で勾配を計算 loss.backward() optimizer.update() コード:学習
  22. 22. train_loss.append(loss.data) train_acc.append(acc.data) sum_loss += float(cuda.to_cpu(loss.data)) * batchsize sum_accuracy += float(cuda.to_cpu(acc.data)) * batchsize # 訓練データの誤差と、正解精度を表示 print 'train mean loss={}, accuracy={}' .format(sum_loss / N,sum_accuracy / N) コード:学習
  23. 23. #evaluation #テストデータで誤差と、正解精度を算出し汎化性能を確認 sum_accuracy = 0 sum_loss = 0 for i in xrange(0, N_test, batchsize): x_batch = x_test[i:i+batchsize] y_batch = y_test[i:i+batchsize] # 順伝播させて誤差と精度を算出 loss, acc = forward(x_batch, y_batch, train=False) test_loss.append(loss.data) test_acc.append(acc.data) コード:評価
  24. 24. sum_loss += float(cuda.to_cpu(loss.data)) * batchsize sum_accuracy += float(cuda.to_cpu(acc.data)) * batchsize # テストデータでの誤差と、正解精度を表示 print 'test mean loss={}, accuracy={}’ .format(sum_loss / N_test, sum_accuracy / N_test) コード:評価
  25. 25. 結果
  26. 26. 結果 間違ったのはこの1つだけ。 でも、9にも見えるので仕方ない!?
  27. 27. 結果:パラメーター の可視化w
  28. 28. Autoencoder
  29. 29. 概要
  30. 30. 時間がないので結果だけ・・・
  31. 31. 活性化関数 中間層数 Dropout ノイズ付加 Sigmoid 1000 あり なし 誤差の推移:20回しくらいで大体収束
  32. 32. 活性化関数 中間層数 Dropout ノイズ付加 Sigmoid 1000 あり なし 出力結果:ほとんど復元できている
  33. 33. 活性化関数 中間層数 Dropout ノイズ付加 Sigmoid 1000 あり なし 第一層 w (1) ji の可視化
  34. 34. 活性化関数 中間層数 Dropout ノイズ付加 Sigmoid 1000 あり なし 第一層 w (1) ji の可視化 結構、数字のエッジ等、 特徴らしきものを捉えられている
  35. 35. 活性化関数 中間層数 Dropout ノイズ付加 Sigmoid 1000 あり なし 第二層 の可視化w (2) ji
  36. 36. 詳細はこちらをご覧ください! • 【機械学習】ディープラーニング フレームワーク Chainerを試しながら解説してみる。 http://qiita.com/kenmatsu4/items/7b8d24d4c5144a686412 • 【ディープラーニング】ChainerでAutoencoderを試 して結果を可視化してみる。 http://qiita.com/kenmatsu4/items/99d4a54d5a57405ecaf8
  37. 37. また、Chainerの仕組みについては作者の方が非常に わかりやすくまとめられているので、ぜひご参考ください! http://www.slideshare.net/beam2d/chainer-atfpgax7
  38. 38. Thanks • Chainer Homepage http://chainer.org • Chainer Github page https://github.com/pfnet/chainer • Chainer Document http://docs.chainer.org • Azusa Colors (Keynote template) http://sanographix.github.io/azusa-colors/

×