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

What's hot

なぜなに?ユーザエクスペリエンスマップ(概要編)
なぜなに?ユーザエクスペリエンスマップ(概要編)なぜなに?ユーザエクスペリエンスマップ(概要編)
なぜなに?ユーザエクスペリエンスマップ(概要編)Naoki Hashimoto
 
スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab
スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab
スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab @yuzutas0 Yokoyama
 
経営のアジリティを支えるDevOpsと組織
経営のアジリティを支えるDevOpsと組織経営のアジリティを支えるDevOpsと組織
経営のアジリティを支えるDevOpsと組織Recruit Technologies
 
UXデザイン・UXリサーチってだいぶ広まったよね?
UXデザイン・UXリサーチってだいぶ広まったよね?UXデザイン・UXリサーチってだいぶ広まったよね?
UXデザイン・UXリサーチってだいぶ広まったよね?Yoshiki Hayama
 
UXデザインのはじめの一歩を体験しよう! 〜ユーザーインタビュー、ユーザー心理分析の基本〜
UXデザインのはじめの一歩を体験しよう! 〜ユーザーインタビュー、ユーザー心理分析の基本〜UXデザインのはじめの一歩を体験しよう! 〜ユーザーインタビュー、ユーザー心理分析の基本〜
UXデザインのはじめの一歩を体験しよう! 〜ユーザーインタビュー、ユーザー心理分析の基本〜Yoshiki Hayama
 
NTTみたいなトラディショナルな企業でアジャイルな取り組みを実現するたった一つの必要なもの! #RSGT2019
NTTみたいなトラディショナルな企業でアジャイルな取り組みを実現するたった一つの必要なもの! #RSGT2019NTTみたいなトラディショナルな企業でアジャイルな取り組みを実現するたった一つの必要なもの! #RSGT2019
NTTみたいなトラディショナルな企業でアジャイルな取り組みを実現するたった一つの必要なもの! #RSGT2019Satoru KawaBuchi
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)Yasuharu Nishi
 
RPA Developer Career Path
RPA Developer Career Path RPA Developer Career Path
RPA Developer Career Path Intellipaat
 
『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019]
『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019]『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019]
『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019]DeNA
 
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumiItsuki Kuroda
 
「ユーザーを理解するって言うほどカンタンじゃないよね」 UXデザイン・UXリサーチをもう一度ちゃんと理解しよう!
「ユーザーを理解するって言うほどカンタンじゃないよね」 UXデザイン・UXリサーチをもう一度ちゃんと理解しよう!「ユーザーを理解するって言うほどカンタンじゃないよね」 UXデザイン・UXリサーチをもう一度ちゃんと理解しよう!
「ユーザーを理解するって言うほどカンタンじゃないよね」 UXデザイン・UXリサーチをもう一度ちゃんと理解しよう!Yoshiki Hayama
 
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkanフロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkanItsuki Kuroda
 
営業向け ABテストの統計学 データアーティスト
営業向け ABテストの統計学 データアーティスト営業向け ABテストの統計学 データアーティスト
営業向け ABテストの統計学 データアーティストSatoru Yamamoto
 
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版Naoki (Neo) SATO
 
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のりRecruit Lifestyle Co., Ltd.
 
実録 ペルソナが死ぬとき 〜ペルソナの上手な使いかた〜
実録 ペルソナが死ぬとき 〜ペルソナの上手な使いかた〜実録 ペルソナが死ぬとき 〜ペルソナの上手な使いかた〜
実録 ペルソナが死ぬとき 〜ペルソナの上手な使いかた〜Yoshiki Hayama
 
ウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれからウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれからHiroshi Kawada
 
UXのためのUIデザイン
UXのためのUIデザインUXのためのUIデザイン
UXのためのUIデザインHironobu Aoki
 

What's hot (20)

なぜなに?ユーザエクスペリエンスマップ(概要編)
なぜなに?ユーザエクスペリエンスマップ(概要編)なぜなに?ユーザエクスペリエンスマップ(概要編)
なぜなに?ユーザエクスペリエンスマップ(概要編)
 
スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab
スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab
スクラム開発チームの立ち上げでアンチパターンを踏みまくった話 #GWD_Nulab
 
Bots & Customer Service
Bots & Customer ServiceBots & Customer Service
Bots & Customer Service
 
経営のアジリティを支えるDevOpsと組織
経営のアジリティを支えるDevOpsと組織経営のアジリティを支えるDevOpsと組織
経営のアジリティを支えるDevOpsと組織
 
UXデザイン・UXリサーチってだいぶ広まったよね?
UXデザイン・UXリサーチってだいぶ広まったよね?UXデザイン・UXリサーチってだいぶ広まったよね?
UXデザイン・UXリサーチってだいぶ広まったよね?
 
UXデザインのはじめの一歩を体験しよう! 〜ユーザーインタビュー、ユーザー心理分析の基本〜
UXデザインのはじめの一歩を体験しよう! 〜ユーザーインタビュー、ユーザー心理分析の基本〜UXデザインのはじめの一歩を体験しよう! 〜ユーザーインタビュー、ユーザー心理分析の基本〜
UXデザインのはじめの一歩を体験しよう! 〜ユーザーインタビュー、ユーザー心理分析の基本〜
 
NTTみたいなトラディショナルな企業でアジャイルな取り組みを実現するたった一つの必要なもの! #RSGT2019
NTTみたいなトラディショナルな企業でアジャイルな取り組みを実現するたった一つの必要なもの! #RSGT2019NTTみたいなトラディショナルな企業でアジャイルな取り組みを実現するたった一つの必要なもの! #RSGT2019
NTTみたいなトラディショナルな企業でアジャイルな取り組みを実現するたった一つの必要なもの! #RSGT2019
 
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
品質を加速させるために、テスターを増やす前から考えるべきQMファンネルの話(3D版)
 
RPA Developer Career Path
RPA Developer Career Path RPA Developer Career Path
RPA Developer Career Path
 
『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019]
『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019]『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019]
『モビリティ・インテリジェンス』の社会実装 [DeNA TechCon 2019]
 
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
新規事業が対峙する現実からエンジニアリングを俯瞰する #devsumiB #devsumi
 
「ユーザーを理解するって言うほどカンタンじゃないよね」 UXデザイン・UXリサーチをもう一度ちゃんと理解しよう!
「ユーザーを理解するって言うほどカンタンじゃないよね」 UXデザイン・UXリサーチをもう一度ちゃんと理解しよう!「ユーザーを理解するって言うほどカンタンじゃないよね」 UXデザイン・UXリサーチをもう一度ちゃんと理解しよう!
「ユーザーを理解するって言うほどカンタンじゃないよね」 UXデザイン・UXリサーチをもう一度ちゃんと理解しよう!
 
Agile and Business
Agile and BusinessAgile and Business
Agile and Business
 
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkanフロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
 
営業向け ABテストの統計学 データアーティスト
営業向け ABテストの統計学 データアーティスト営業向け ABテストの統計学 データアーティスト
営業向け ABテストの統計学 データアーティスト
 
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版
 
事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり事業成長にコミットするエンジニア組織への道のり
事業成長にコミットするエンジニア組織への道のり
 
実録 ペルソナが死ぬとき 〜ペルソナの上手な使いかた〜
実録 ペルソナが死ぬとき 〜ペルソナの上手な使いかた〜実録 ペルソナが死ぬとき 〜ペルソナの上手な使いかた〜
実録 ペルソナが死ぬとき 〜ペルソナの上手な使いかた〜
 
ウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれからウェブパフォーマンスの基礎とこれから
ウェブパフォーマンスの基礎とこれから
 
UXのためのUIデザイン
UXのためのUIデザインUXのためのUIデザイン
UXのためのUIデザイン
 

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で動かしてみた