経験ゼロのWeb企業が機械学習に取り組んだ話

3,399 views

Published on

This slides were used at "5th Machine Learning 15minetes!" http://machine-learning15minutes.connpass.com/event/40294
Introduce important things to tackle machine learning in a company.

Published in: Software
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,399
On SlideShare
0
From Embeds
0
Number of Embeds
2,099
Actions
Shares
0
Downloads
26
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

経験ゼロのWeb企業が機械学習に取り組んだ話

  1. 1. 経験ゼロのWeb企業が    機械学習に取り組んだ話 2016/10/22 第5回 Machine Learning 15 minutes! アディッシュ株式会社 技術開発部 白木 義彦
  2. 2. 2 自己紹介 白木 義彦(@shirakiya831) アディッシュ株式会社 技術開発部 大阪大学大学院で金属材料工学を学んだ後、 株式会社ガイアックスに入社。 今年5月に機械学習エンジニアを目指して転籍。 プログラミングを初めて3年目。 Webアプリに関わる技術はだいたい。 最近: ・ DjangoでAPIサーバを書いています ・ テキスト分類タスクに取り組みはじめました ・ インターン生が開発している画像分類タスクをサポートしてます
  3. 3. 3 今日話すこと 機械学習を一切取り組んでいなかったWeb企業が •  機械学習に取り組んでみてわかった重要だったこと について知見共有的に紹介します。 ※ 技術的な話(〇〇の使い方 とか アルゴリズムの説明)は話しません。
  4. 4. 4 会社紹介
  5. 5. アディッシュについて 5 設立:1999年3月 ガイアックス内で2006年よりSNS モニタリング事業開始 企業ミッション: つながりを常によろこびに 新たなコミュニケーション手段によって 発生する課題(主にオンライン上)を 「人の手+技術力+専門ノウハウ」 により解決する 分社化 2014年10月 24時間365日有人+システム 一体型サービス
  6. 6. 6 6 モニタリング カスタマーサポート スクールガーディアン フロントサポート 24時間365日 SNS目視チェック メール、TEL チャット顧客対応 ネットいじめ対策 ネットリテラシー教育 能動的な カスタマーサポート Web接客 事業
  7. 7. 7 拠点 従業員数:400名弱 全拠点24時間365日運用 <国内拠点> ・仙台 ・東京 ・福岡 ・沖縄 <海外拠点> ・フィリピン マニラ
  8. 8. 8 最近のトピック
  9. 9. 『hitobo』の提供開始 9 ⼈とBotの合同チームでチャットサポート
  10. 10. 『hitobo』の提供開始 10 1.  「Bot」の大量・同時・迅速対応 2.  「人」の深い洞察のある対応 両ロールの相互補完によるカスタマーサポートを実現 深く正確に 理解! 素早く大量 に返信!
  11. 11. 11 ビジネスライクな紹介はここまで。
  12. 12. 12 今までのエンジニアリング
  13. 13. 13 有人体制 + 技術的な効率化 例:24時間365日モニタリングサービス モニタリング ツール ソーシャルメディア書き込み 報告 ~~~ ~~~ ~~~ ~~~ 目視 チェック 判断基準 adish  運用スタッフ クライアント Blog 掲示板 技術的な 効率化 人ならではの 判断 Facebook
  14. 14. 14  adishにおける「技術」 = 運用効率化 = 有人体制を補助する
  15. 15. 有人体制を助ける技術 「WEBエンジニアリング」が中心 •  ソーシャルメディアがWebサービスのため 15 システム要件 •  24時間365日稼働 •  SNSサービスとのAPI連携 •  膨大なデータ量を捌く技術 •  作業しやすい画面デザイン 等 社内で頻出する技術単語 AWS HTTP/HTTPS Ansible Provisioning フェイルオーバー Itamae バッチ処理 CI Terraform Jenkins Packer Perl Amon2 React.js webpack JavaScript Ruby Rails MySQL
  16. 16. 16 『機械学習』の文字が 一文字もないですね。
  17. 17. 17 よし、やるぞ!!
  18. 18. 18 …といって、約半年が経過しました。 取り組みを通して得られた 「重要だったこと」 を共有します。
  19. 19. 取り組みを通して得られたこと 1.  「今を知る」情報収集 2.  高速で仮説検証を回す 3.  すぐに成果を求めない 4.  教師データ作成のフローを作る 5.  目標を明確に定義する 19 重要だったこと
  20. 20. 取り組みを通して得られたこと 1.  「今を知る」情報収集 2.  高速で仮説検証を回す 3.  すぐに成果を求めない 4.  教師データ作成のフローを作る 5.  目標を明確に定義する 20 重要だったこと
  21. 21. 21 1. 「今を知る」情報収集 何から手をつければいいのかわからない 「なんかディープラーニング凄いけど」 「ディープラーニングの性能が上がった話題が多いんだけど」 「TensorFlowのチュートリアルやったけど、実際この先どうすれば良い?」 片っ端から情報収集できる状態にする •  ディープラーニングはまだ新しい技術 •  現在〜の世の中の情報を抑えておくだけでも、 適用範囲、使い方 の情報がたくさん出てくる
  22. 22. 22 1. 「今を知る」情報収集 収集していた情報のソースとその内容 ソース 内容 Yahoo!ニュース「人工知能」カテゴリの ニュース記事 (後にAINOWさんへ) 国内の人工知能関連ニュース Menthas.com #machine-learning (RSS) 主な国内の機械学習技術に関する記事 Twi^erアカウント「@hillbig」のツイート 最新技術の紹介とそのコメント Twi^erアカウント「@AI_m_lab」のツイート 国内の機械学習技術に関する記事を ピックアップして紹介 arXiv「stat.ML」 (RSS) 海外の機械学習技術関連の論文 ※ 他にも良い情報ソースがあればご教授ください!
  23. 23. 23 1. 「今を知る」情報収集 初心者向け記事から、発展的内容の記事、新しいアルゴリズムに関 する紹介等が集められ、「技術要素のインデックス」を頭に作ることが できる(特にディープラーニングで) メリット デメリット かなり情報過多なので、無限に時間を使えてしまう 課題に対して適用すべき技術要素の選定等が行える状態になり、 「何から始めたらいいのか」の解を得ることができる (多様な技術記事に触れるので、やりたいことだらけになり、  悶々とした日々を過ごすことになる)
  24. 24. 取り組みを通して得られたこと 1.  「今を知る」情報収集 2.  高速で仮説検証を回す 3.  すぐに成果を求めない 4.  教師データ作成のフローを作る 5.  目標を明確に定義する 24 重要だったこと
  25. 25. 25 2. 高速で仮説検証を回す 機械学習の経験が無い 教師データのアノテーションルール モデル ハイパーパラメータ ... の変更が与える影響がわからない。というか何もわからない。 論文 (形式知) •  全ての論文の知識を手に入れる •  該当の論文を探し出す のもすぐには難しい。 実際に自分の手でやって確認してみる、それも高速で。
  26. 26. 2. 高速で仮説検証を回す 仮説検証のPDCAをどれだけ早く回せるか 26 意識するべきこと① •  → 結果の数字を出して効果が確認できる。 •  経験的に因果を学んでいく。 •  → ツール(DLフレームワークや機械学習ライブラリ)の様々な 使い方も同時に覚えられる。 •  より早く実装することができ、さらにPDCAを早く回すことができる。 •  できることが広がり、新しいチャレンジができる。
  27. 27. 2. 高速で仮説検証を回す 同時にそのPDCAを早く回せるような環境を作る 27 意識するべきこと② •  エンジニアは理論をインプットして、実装して・学習させて、 結果を見て、仮説を立てて…に集中できる状態にする。 •  データの準備や補助ツールの開発などは (知識を得るという 意味で) 本質ではないので、周りがサポートする。
  28. 28. 取り組みを通して得られたこと 1.  「今を知る」情報収集 2.  高速で仮説検証を回す 3.  すぐに成果を求めない 4.  教師データ作成のフローを作る 5.  目標を明確に定義する 28 重要だったこと
  29. 29. 29 3. すぐに成果を求めない 「機械学習は時間がかかる」 Input •  アルゴリズムの学習、情報収集、ライブラリ、写経… 実作業 •  実装、学習(Train)、評価・考察… Output •  経験による暗黙知 → 形式知 のための文章化… さらに •  やっても精度が悪く、精度向上を狙って、あの手この手を繰り返す
  30. 30. 3. すぐに成果を求めない 長い目で待つことは想定の内に 30 意識するべきこと •  前スライドにある作業は絶対に必要 •  論文に近い数値を求めがちだが、実際のデータセットは研究 で用いるものより汚いことが多いので、目標に段階を作るなど •  機械学習は失敗があり得るもので、常にその失敗の不安と隣 合わせで精神負荷が大きい。そのケアも忘れずに
  31. 31. 取り組みを通して得られたこと 1.  「今を知る」情報収集 2.  高速で仮説検証を回す 3.  すぐに成果を求めない 4.  教師データ作成のフローを作る 5.  目標を明確に定義する 31 重要だったこと
  32. 32. 32 4. 教師データ作成の業務フローを作る 教師データの作成はかなりの時間が必要 しかし、エンジニアは技術的な作業に集中すべき でも、教師データは教師あり学習なら必要なもの ※ 新たに教師データを作成する必要がある方のみ限定 何らかの方法で必ずしないといけないこと 一度だけ…?いいえ、違います。 人の手によるアノテーション作業が発生する
  33. 33. 33 4. 教師データ作成の業務フローを作る 教師データの作成は複数回発生するもの 分類ラベルの付け方が悪くて精度が悪い データ追加分のアノテーション作業が発生しうる … あらかじめ教師データを作成する業務フローを整備する (これを効率良く行えるツール作りも大切) 教師データの作成 = ボトルネック
  34. 34. 取り組みを通して得られたこと 1.  「今を知る」情報収集 2.  高速で仮説検証を回す 3.  すぐに成果を求めない 4.  教師データ作成のフローを作る 5.  目標を明確に定義する 34 重要だったこと
  35. 35. 35 5. 目標を明確に定義する 〇〇な画像を自動分類し、ソリューションとして提供する 試行錯誤を繰り返しながら、開発が進み… 目標 「再現率90%、適合率60%の分類器ができた。」 「…今現状自分達は”使える分類器”が作れているのか!?」 「…どこが私達のゴールなの?」
  36. 36. 36 5. 目標を明確に定義する 終わらない戦い!! そして何に注力して改善すればいいのかわからない!! ダメですよねー。
  37. 37. 37 5. 目標を明確に定義する 〇〇という戦略で、△△な企業に対して、 □□というソリューションを提供しよう。 そのためには、最低限の性能として 再現率80%以上、適合率は70%以上 の性能を持った分類器が必要。 目標を詳細に定義した 「お、現状は目標に対して、再現率は高くて適合率は低いので、 クラス判定の閾値設定をもう少し厳しめにしてみよう。」 目標 目標設定 課題の認識 解決策の考案
  38. 38. 5. 目標を明確に定義する 機械学習で達成すべき目標を明確に定義する •  使うべきアルゴリズムが決められる •  用意すべきデータセットもより的確なものに決定できる •  パラメータの値の調整も方針付けられる •  評価方法も適切なものを用意することができる •  何よりゴールが見えるので、現状を伝えやすく、認識しやすい 38 意識するべきこと
  39. 39. 39 当たり前なことだったと思いますが、 意外と当たり前を見落としがちになると思います。 機械学習を始める前に 少しでも意識してみてはいかがでしょうか
  40. 40. 40 さいごに
  41. 41. 41 リリースしました!ご興味のある方はぜひ! ⼈とBotの合同チームでチャットサポート
  42. 42. 42 ご清聴ありがとうございました。

×