SlideShare a Scribd company logo
1 of 41
Download to read offline
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, GitLab, GitLab-CI, Docker, Jenkins, Fastlane, Terraform,
Ansible, Vagrant...
○ その他:ディープラーニング, IoT
○ 技術ブログ: http://gtech.hatenablog.com/
自社アプリ
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の起動タイムラグがある
○ 長い間使わないと自動的停止してしまう
○ 2つのLambdaで合計5秒ぐらいのタイムラグがある
● 料金に関して
○ ほとんど無料枠に収まる
○ VPC NAT Gatewayだけは料金がちょっと高い
最後に
● ガラパゴスではエンジニアを募集中
○ 最先端の技術に興味がある
○ ものづくりが好きだ
○ 難しい課題に取り組みたい
○ フレックスで自由に働きたい
○ 自動化が好きだ
○ etc ...
● 一つでも当てはまる方!是非一緒に働きましょう!!
ご清聴ありがとうございました!
参考:LINE Botの作り方について
● LINE Messenging APIを利用
● LINE Business Centerを登録して、Channel (bot)を管理画面で
作る
● Channel SecretとChannel Access Tokenがもらえる
● Line SDK (Python)を利用する
● サーバーのURLをBotのWebhook URLに登録する (httpsが必
要)
参考: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 # 文の長さ
      )
参考:パラメータチューニング前:overfitting
loss
test
train
steps
参考:dropoutを入れた結果:underfitting?
loss
test
train
データを増やすべき?
steps

More Related Content

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

アプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツールアプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツールKeishi Hosoba
 
初めてのRxSwift
初めてのRxSwift初めてのRxSwift
初めてのRxSwiftIvan Luque
 
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版Tomoki Hasegawa
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール WeinerをつかってみたMasakazu Muraoka
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ真吾 吉田
 
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことMasakazu Muraoka
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoKyosuke Inoue
 
コミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということコミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということKazuho Oku
 
スタートアップツールチラ見せ
スタートアップツールチラ見せスタートアップツールチラ見せ
スタートアップツールチラ見せHisatoshi Kikumoto
 
TensorFlowで音声認識
TensorFlowで音声認識TensorFlowで音声認識
TensorFlowで音声認識祐太 上岡
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in TokyoKyosuke Inoue
 
Slack,Teams,LINE botの作り方の違いとか
Slack,Teams,LINE botの作り方の違いとかSlack,Teams,LINE botの作り方の違いとか
Slack,Teams,LINE botの作り方の違いとかMitsuhiro Yamashita
 
Slack,Teams,LINE botの作り方の違いとか
Slack,Teams,LINE botの作り方の違いとかSlack,Teams,LINE botの作り方の違いとか
Slack,Teams,LINE botの作り方の違いとかMitsuhiro Yamashita
 
Livlisのcakephp事例
Livlisのcakephp事例Livlisのcakephp事例
Livlisのcakephp事例Masahiro Saito
 

Similar to TensorFlowで訓練したLINE BotをAWS Lambdaで動かしてみた (20)

アプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツールアプリ開発の境界問題を支えるツール
アプリ開発の境界問題を支えるツール
 
初めてのRxSwift
初めてのRxSwift初めてのRxSwift
初めてのRxSwift
 
190731 chalice
190731 chalice190731 chalice
190731 chalice
 
Example using LattePanda
Example  using LattePandaExample  using LattePanda
Example using LattePanda
 
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
AWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャAWSによるサーバーレスアーキテクチャ
AWSによるサーバーレスアーキテクチャ
 
HTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なことHTML5時代のwebクリエイターに必要なこと
HTML5時代のwebクリエイターに必要なこと
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
IoT ChatOps #IoTLT
IoT ChatOps #IoTLTIoT ChatOps #IoTLT
IoT ChatOps #IoTLT
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
 
Platform.html5
Platform.html5Platform.html5
Platform.html5
 
コミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということコミュニケーションソフトウェアを創るということ
コミュニケーションソフトウェアを創るということ
 
スタートアップツールチラ見せ
スタートアップツールチラ見せスタートアップツールチラ見せ
スタートアップツールチラ見せ
 
TensorFlowで音声認識
TensorFlowで音声認識TensorFlowで音声認識
TensorFlowで音声認識
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
Slack,Teams,LINE botの作り方の違いとか
Slack,Teams,LINE botの作り方の違いとかSlack,Teams,LINE botの作り方の違いとか
Slack,Teams,LINE botの作り方の違いとか
 
Slack,Teams,LINE botの作り方の違いとか
Slack,Teams,LINE botの作り方の違いとかSlack,Teams,LINE botの作り方の違いとか
Slack,Teams,LINE botの作り方の違いとか
 
Livlisのcakephp事例
Livlisのcakephp事例Livlisのcakephp事例
Livlisのcakephp事例
 

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