Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
TensorFlowで訓練した
LINE BotをAWS Lambdaで動
かしてみた
2016/11/08 Van Huy
株式会社ガラパゴス
About me
● Van Huy (バン フイ)
● @vanhuyz
● ベトナム出身
● 東京大学電子情報工学科卒
● サーバーエンジニア
● 最近はTensorFlow, Elixirに興味がある
ガラパゴスって?
● スマートフォンアプリの受託開発の会社です!
● https://www.glpgs.com
● 技術:
○ 言語:Swift, Java, Ruby, Python, Elixir...
○ ツール: Slack, Git...
自社アプリ
Start fit うごく猫
運動習慣支援アプリ
iPhone, AppleWatch
猫好きホイホイアプリ
iPhone
ひっそり30万DL ニャー
LINEスタンプも作ってます
ダイエット 作画崩壊 ゆるゆる 取り急ぎJK
デモ
まずはデモしましょう!
LINEで友達を追加!
Botについて
このbotを作るには
● 人工無能
○ 単語レベルのパターンマッチ
このbotを作るには
● 人工無能
● 少し知能を育てたい
このbotを作るには
● 人工無能
● 少し知能を育てたい
訓練します!
Botを訓練するデータ
● おやすみ
● おめでとう
課題
● いい感じのbotを作るには大量のデータが必要
○ LINEのチャットデータは持っていない
○ メッセージ1個ずつスタンプラベルをつけるのが
超大変
これを見かけた
絵文字
絵文字からスタンプに変換(手動)
ツイートから訓練データが作れる!
● おやすみ
● おめでとう
Twitterには無限に訓練データがあ
る!
現状のデータ
● 3日間でツイートを収集
● ~23万のツイートを分割・整理して~28万文ができた
○ 訓練用:25万文
○ テスト用:3万文
● ラベルスタンプ数:46
ある文に適切なスタンプを推定
テキスト分類問題
テキスト分類
● 応用
○ スパムフィルタ:スパム/スパムでないメールを分類する
○ 新聞をカテゴリに分類する
○ 感情分析
● 機械学習の古典な手法
○ ナイーブベイズ
○ サポートベクトルマシン(SVM)
ディープラーニングの登場
● 機械学習の一部
● 自然言語処理においてRNN(Recurrent Neural Network - 再帰
型ニューラルネットワーク)が強い
○ 機械翻訳
○ 文章自動生成
○ 音声認識
○ 画像キャプション生成
流れ
● テキスト前処理
○ ツイートの固有単語を排除(RT, URLなど)
○ MeCabで分かち書き
● 単語をRNNに入れる
● RNNの出力からスタンプを推定
誕生日 おめでとう ござい ます
単語の列
RNNモデル
スタンプID
誕生日おめでとうございます
分かち書き
訓練環境
● GPU GeForce GTX 1080 8GB
● TensorFlow v0.11
● Docker経由
● 訓練時間:8時間程度
訓練結果の可視化
・近いほど意味が近いという
・「スタンプの意味空間」
問題点と今後の方針
● 未知の単語に対してはまだ弱い
○ 訓練データを増やす
● 絵文字からスタンプにマッピングは主観的
● 本物の訓練データ収集機能を実装したい
○ スタンプが間違ったらユーザー指摘できるように
AWS構成
大変お世話になった記事
http://qiita.com/hiyuzawa/items/10e7bf2f6ad5d1c7fc9c
感想
● AWS Lambdaの実行コードのサイズ制限は厳しい
○ MeCabの良い辞書が使えない
○ TensorFlowのモデルの表現能力 (capacity) が上げられない
● Python3系まだ対応していない
● Lambdaの起動...
最後に
● ガラパゴスではエンジニアを募集中
○ 最先端の技術に興味がある
○ ものづくりが好きだ
○ 難しい課題に取り組みたい
○ フレックスで自由に働きたい
○ 自動化が好きだ
○ etc ...
● 一つでも当てはまる方!是非一緒に働きま...
ご清聴ありがとうございました!
参考:LINE Botの作り方について
● LINE Messenging APIを利用
● LINE Business Centerを登録して、Channel (bot)を管理画面で
作る
● Channel SecretとChannel A...
参考:TensorFlowで単純なRNNの実装例
# LSTMを使う
cell = tf.nn.rnn_cell.BasicLSTMCell(LSTM_SIZE, state_is_tuple=True)
# RNNの定義
outputs, s...
参考:パラメータチューニング前:overfitting
loss
test
train
steps
参考:dropoutを入れた結果:underfitting?
loss
test
train
データを増やすべき?
steps
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた
Upcoming SlideShare
Loading in …5
×

TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた

4,035 views

Published on

【AWS×BOT】TechTalk #3 で発表した資料です!
http://lig.connpass.com/event/41826/

Published in: Engineering
  • Sex in your area is here: ♥♥♥ http://bit.ly/2ZDZFYj ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ❤❤❤ http://bit.ly/2ZDZFYj ❤❤❤
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた

  1. 1. TensorFlowで訓練した LINE BotをAWS Lambdaで動 かしてみた 2016/11/08 Van Huy 株式会社ガラパゴス
  2. 2. About me ● Van Huy (バン フイ) ● @vanhuyz ● ベトナム出身 ● 東京大学電子情報工学科卒 ● サーバーエンジニア ● 最近はTensorFlow, Elixirに興味がある
  3. 3. ガラパゴスって? ● スマートフォンアプリの受託開発の会社です! ● https://www.glpgs.com ● 技術: ○ 言語:Swift, Java, Ruby, Python, Elixir... ○ ツール: Slack, GitLab, GitLab-CI, Docker, Jenkins, Fastlane, Terraform, Ansible, Vagrant... ○ その他:ディープラーニング, IoT ○ 技術ブログ: http://gtech.hatenablog.com/
  4. 4. 自社アプリ Start fit うごく猫 運動習慣支援アプリ iPhone, AppleWatch 猫好きホイホイアプリ iPhone ひっそり30万DL ニャー
  5. 5. LINEスタンプも作ってます ダイエット 作画崩壊 ゆるゆる 取り急ぎJK
  6. 6. デモ
  7. 7. まずはデモしましょう! LINEで友達を追加!
  8. 8. Botについて
  9. 9. このbotを作るには ● 人工無能 ○ 単語レベルのパターンマッチ
  10. 10. このbotを作るには ● 人工無能 ● 少し知能を育てたい
  11. 11. このbotを作るには ● 人工無能 ● 少し知能を育てたい 訓練します!
  12. 12. Botを訓練するデータ ● おやすみ ● おめでとう
  13. 13. 課題 ● いい感じのbotを作るには大量のデータが必要 ○ LINEのチャットデータは持っていない ○ メッセージ1個ずつスタンプラベルをつけるのが 超大変
  14. 14. これを見かけた 絵文字
  15. 15. 絵文字からスタンプに変換(手動)
  16. 16. ツイートから訓練データが作れる! ● おやすみ ● おめでとう
  17. 17. Twitterには無限に訓練データがあ る!
  18. 18. 現状のデータ ● 3日間でツイートを収集 ● ~23万のツイートを分割・整理して~28万文ができた ○ 訓練用:25万文 ○ テスト用:3万文 ● ラベルスタンプ数:46
  19. 19. ある文に適切なスタンプを推定 テキスト分類問題
  20. 20. テキスト分類 ● 応用 ○ スパムフィルタ:スパム/スパムでないメールを分類する ○ 新聞をカテゴリに分類する ○ 感情分析 ● 機械学習の古典な手法 ○ ナイーブベイズ ○ サポートベクトルマシン(SVM)
  21. 21. ディープラーニングの登場 ● 機械学習の一部 ● 自然言語処理においてRNN(Recurrent Neural Network - 再帰 型ニューラルネットワーク)が強い ○ 機械翻訳 ○ 文章自動生成 ○ 音声認識 ○ 画像キャプション生成
  22. 22. 流れ ● テキスト前処理 ○ ツイートの固有単語を排除(RT, URLなど) ○ MeCabで分かち書き ● 単語をRNNに入れる ● RNNの出力からスタンプを推定
  23. 23. 誕生日 おめでとう ござい ます 単語の列 RNNモデル スタンプID 誕生日おめでとうございます 分かち書き
  24. 24. 訓練環境 ● GPU GeForce GTX 1080 8GB ● TensorFlow v0.11 ● Docker経由 ● 訓練時間:8時間程度
  25. 25. 訓練結果の可視化 ・近いほど意味が近いという ・「スタンプの意味空間」
  26. 26. 問題点と今後の方針 ● 未知の単語に対してはまだ弱い ○ 訓練データを増やす ● 絵文字からスタンプにマッピングは主観的 ● 本物の訓練データ収集機能を実装したい ○ スタンプが間違ったらユーザー指摘できるように
  27. 27. AWS構成
  28. 28. 大変お世話になった記事 http://qiita.com/hiyuzawa/items/10e7bf2f6ad5d1c7fc9c
  29. 29. 感想 ● AWS Lambdaの実行コードのサイズ制限は厳しい ○ MeCabの良い辞書が使えない ○ TensorFlowのモデルの表現能力 (capacity) が上げられない ● Python3系まだ対応していない ● Lambdaの起動タイムラグがある ○ 長い間使わないと自動的停止してしまう ○ 2つのLambdaで合計5秒ぐらいのタイムラグがある ● 料金に関して ○ ほとんど無料枠に収まる ○ VPC NAT Gatewayだけは料金がちょっと高い
  30. 30. 最後に ● ガラパゴスではエンジニアを募集中 ○ 最先端の技術に興味がある ○ ものづくりが好きだ ○ 難しい課題に取り組みたい ○ フレックスで自由に働きたい ○ 自動化が好きだ ○ etc ... ● 一つでも当てはまる方!是非一緒に働きましょう!!
  31. 31. ご清聴ありがとうございました!
  32. 32. 参考:LINE Botの作り方について ● LINE Messenging APIを利用 ● LINE Business Centerを登録して、Channel (bot)を管理画面で 作る ● Channel SecretとChannel Access Tokenがもらえる ● Line SDK (Python)を利用する ● サーバーのURLをBotのWebhook URLに登録する (httpsが必 要)
  33. 33. 参考:TensorFlowで単純なRNNの実装例 # LSTMを使う cell = tf.nn.rnn_cell.BasicLSTMCell(LSTM_SIZE, state_is_tuple=True) # RNNの定義 outputs, state = tf.nn.dynamic_rnn(cell,       embed_inputs, # 単語ベクトル       dtype=tf.float32,       sequence_length=sequence_length # 文の長さ       )
  34. 34. 参考:パラメータチューニング前:overfitting loss test train steps
  35. 35. 参考:dropoutを入れた結果:underfitting? loss test train データを増やすべき? steps

×