Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゲーム制作効率化のためのAIによる画像認識・自然言語処理への取り組み

510ec964f5d26c2724c883fd7b671e3d?s=47 Cygames
September 01, 2021

 ゲーム制作効率化のためのAIによる画像認識・自然言語処理への取り組み

2021/08/26 CEDEC2021

510ec964f5d26c2724c883fd7b671e3d?s=128

Cygames

September 01, 2021
Tweet

Transcript

  1. © Cygames, Inc. 1/63ページ

  2. © Cygames, Inc. この講演で得られること 2/63ページ • ゲーム会社へAIを導入した事例をいくつか紹介 • 画像認識系のAI、自然言語処理のAIの開発 •

    AIの学習、インフラ構築、作業分担、デプロイ環境などについて一通り紹介 • これからAIを導入されるゲーム会社の参考になると思います
  3. © Cygames, Inc. 自己紹介 3/63ページ • 立福 寛(たてふく ひろし) •

    前職:コンテンツパイプラインの構築、モバイルゲームの開発・運営など • 2019年に株式会社Cygamesへ入社 • 2020年からAIの開発に着手 – 前からAIを専門にやっていたわけではない – これからAIを導入される方の参考になりそう
  4. © Cygames, Inc. 講演内容 4/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  5. © Cygames, Inc. 講演内容 5/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  6. © Cygames, Inc. 今のチームの紹介 6/63ページ • 開発運営支援 プロジェクト共通基盤チーム – 複数のゲームプロジェクトに共通のツールなどを提供するチーム

    – リソース管理ツール、シナリオ執筆ツールなどを開発・サポート – ゲームを面白くするためのプロセス改善と組織デザイン(CEDEC2019)
  7. © Cygames, Inc. AIを導入した経緯 7/63ページ • 書籍化やWebなども含め、機械学習の導入事例が増えてきた – ゲーム開発での導入事例も増え、情報にアクセスしやすくなった •

    AIを導入しやすいチーム – データを管理するツールを開発 → データを利用しやすい – 複数のプロジェクトにツールを提供 → 開発したAIを利用してもらえる • 個人的に興味があった – 最初は個人レベルで始めるので、興味のある人のほうがよい – ある程度固まった期間を確保してAIに専念
  8. © Cygames, Inc. どこへAIを導入するか? 8/63ページ • 一番簡単そうな画像認識から導入 • リソース管理ツールの自動タグ付け機能を開発

  9. © Cygames, Inc. 開発環境 9/63ページ • 当初はWindows+GTX1080Tiで開発 – 動作が不安定 •

    Ubuntu18.04+GTX2080Tix2環境へ移行 – 環境ごとのdockerで作業 – 安定性が高い、デプロイが楽 • ローカルPCで学習 – クラウドのGPUインスタンスはまだ高い – 費用を気にしないでいいので担当エンジニアの気が楽(これは結構大きい)
  10. © Cygames, Inc. 講演内容 10/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  11. © Cygames, Inc. 物体検出アルゴリズムを利用したキャラクター画像の自動タグ付け 11/63ページ • キャラクターが一人以上含まれる画像を入力 > 名前を返す •

    複数のキャラクターが含まれるので物体検出アルゴリズムを使う • 社内のリソース管理ツールの機能として実装(後述) Aさん Bさん Cさん Dさん
  12. © Cygames, Inc. リソース管理ツールの紹介 12/63ページ • スペースが分けられる画像・動画のアップローダー – チームで開発しているツール –

    複数のプロジェクトで利用 – 画像・動画のアップロード・検索・閲覧 – タグの追加・検索 – Web APIでリソースの一括ダウンロードが可能(重要!)
  13. © Cygames, Inc. 物体検出アルゴリズム(SSD)について 13/63ページ • 画像の中に何が含まれるか、領域と名前を検出する機械学習モデル – SSD(Single Shot

    Multibox Detector) – オープンソースのPyTorchの実装を使用 • 学習データ – 画像 – 物体の領域 – クラス名 • 推論 – 入力:画像 – 出力:領域とクラス名 Aさん Bさん Cさん Dさん
  14. © Cygames, Inc. 学習データの準備 14/63ページ • リソース管理ツールにはタグのついた画像が数千枚登録済 – キャラクターが一人だけ含まれる画像を利用 –

    二人以上含まれる場合は、どちらが誰か判別できないため – 今回の対象は1プロジェクトのみ • キャラクターの顔領域を検出 – OpenCVのアニメ顔認識モデル(オープンソース)で顔の領域を取り出す – 「画像+顔の領域の座標+キャラクターの名前」のセットが手に入る • キャラクターは200人程度、画像の数は70から7枚程度 – キャラクターにより画像数の差がある アニメ顔認識モデル 顔を取り出す 二人以上含まれる 画像は利用しない
  15. © Cygames, Inc. SSDで学習してテスト 15/63ページ • ローカルPCで学習してテスト – 1日程度学習 –

    キャラクター名を当るテスト:精度は90%前半 • 複数人が含まれる画像でテスト。精度80%以上 – 学習データが多いキャラクターは精度が高い(逆も同様) – 顔や髪型に特徴が少ない一部のキャラクターは精度が低い • 大きくデフォルメされた画像の扱い – 学習データに含めると精度が大きく落ちた – 混ぜないでモデルを分けた方がよい • 左右対称のキャラクターがいる場合 – 学習時に左右反転して使わない • 他の要素について – 顔が回転しているケースの扱い – 片目が隠れている場合
  16. © Cygames, Inc. 画像認識アルゴリズムを用いた背景画像の自動タグ付け 16/63ページ • 背景画像にも同様の機能を実装 • AWS Sagemaker(後述)の画像認識モデルを利用

    • 学習データ – 画像数:1400枚(モバイルゲームの背景画像) – 分類クラス数:180程度(公園、街中、控え室、etc) • 実際のデータでの精度は7割ほど タグ:公園 タグ:ライブ会場
  17. © Cygames, Inc. 講演内容 17/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  18. © Cygames, Inc. デプロイ環境を検討(初期実装) 18/63ページ • リソース管理ツールはAWS上に構築 → AWSで完結したい •

    AWS Sagemakerを使うことに決定 – Sagemakerは機械学習の統合環境 – 様々な機械学習モデルの学習・エンドポイント作成などが行える • Sagemakerの物体検出アルゴリズムで学習・テスト – 同じデータで学習したが精度が低い(80%程度) – AWSのサポートと相談 > データのバリーエションを増やして解決 – 先にオープンソースの実装でテストしていたのが役立った
  19. © Cygames, Inc. デプロイ環境を検討(初期実装) 19/63ページ • API Gateway > Lambda

    > Sagemaker 経由で呼び出す • まず、この構成でリリース • 問題点:SagemakerはAPIごとに1CPUインスタンス必要になる – 機能を増やすごとに毎月のコストが増える – 利用頻度が低いのでコスト的に辛い – Lambdaで単体で動作するように後ほど修正 リソース 管理 ツール API Gateway Lambda Sage maker
  20. © Cygames, Inc. デプロイ環境を検討(最終的な実装) 20/63ページ • Lambda単体で動かすように変更 – 最初のオープンソースのSSDの実装を使う –

    機能を増やすごとにコストが増えない – 機械学習エンジニアの気が楽(!) • Lambdaのdockerイメージを利用 – ユーザーのdockerイメージをLambdaで動かせる – 最大10GBまで – Pythonの機械学習のモジュールを動かすのが非常に楽 – こちらは後の自然言語処理でも利用
  21. © Cygames, Inc. リソース管理ツールへ機能追加 21/63ページ • 画像のアップロード時にタグの予測ボタンを押すと推論実行 – 実行時間:数秒(初回呼び出し時のみ20秒程度)

  22. © Cygames, Inc. 作業分担 22/63ページ • 今回はそれぞれの担当が作業 • AIの学習・APIの作成(一人) –

    機械学習モデルの作成(2ヶ月) – デプロイ(2ヶ月) • AWSのインフラ構築(一人) – インフラ担当者(1週間) • リソース管理ツールへの機能追加(一人) – ツールの開発者(1週間)
  23. © Cygames, Inc. 講演内容 23/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  24. © Cygames, Inc. 次は表記揺れ・誤字検出機能の開発 24/63ページ • 次のネタを探すために社内でヒアリング • シナリオ執筆ツール上で「表記揺れ・誤字」を検出してほしい •

    まず表記揺れ、次に誤字検出を開発
  25. © Cygames, Inc. シナリオ執筆ツールとは? 25/63ページ • 社内シナリオライターが使用するWeb上のシナリオ作成環境 – シナリオの作成・監修・台本の印刷・音声の管理なども行える •

    APIからシナリオが一括で取得できる(今回はここが大きい!) – エクセルと比べてフォーマットが完全に統一されている
  26. © Cygames, Inc. シナリオ執筆ツールへの表記揺れ機能の開発 26/63ページ • 以下のような表記揺れを検出してほしい – 「キャンパス」「キャンバス」(表記揺れではなく誤字) –

    「一緒」「いっしょ」 • 日本語の表記揺れについて調査 • 参考にした論文 – 「仕様書特有表現の表記揺れを検出するツールの試作と評価」 • 調査した結果、機械学習よりルールベースのほうが適切 • 形態素解析+ルールベースでの実装
  27. © Cygames, Inc. 形態素解析とは? 27/63ページ • 文章を入力すると単語(トークン)ごとに分割 • 読み仮名、品詞などを取得できる •

    例:Juman++で「私もあさって日曜最終日」を形態素解析した結果 見出し 読み仮名 品詞 私 わたし 名詞 も も 助詞 あさって あさって 名詞 日曜 にちよう 名詞 最終 さいしゅう 形容詞 日 ひ 名詞
  28. © Cygames, Inc. 表記揺れ機能のアルゴリズム 28/63ページ • 文章を形態素解析 → 品詞が「名詞」のものを取り出す –

    名詞が連続している場合、結合して一つの単語として扱う • 単語同士で「表記揺れのスコア」を求める(後述) – スコアが高いほど表記揺れの可能性が高い – スコアが高い順に30程度を返す関数として実装 表記揺れ順位 スコア 単語A 単語B 1 3.1 たこ焼 たこ焼き 2 3.0 一時間 1時間 3 2.8 カット カラット 4 2.8 ホント ヒント
  29. © Cygames, Inc. 形態素解析モデルについて 29/63ページ • 2つの形態素解析モデルを試した • Juman++ –

    RNNを用いて単語の並びの意味的な自然さを考慮した解析を行う – https://nlp.ist.i.kyoto-u.ac.jp/?JUMAN%2B%2B • mecab-ipadic-Neologd – 大きな辞書を持ち、固有表現に強い – https://github.com/neologd/mecab-ipadic-neologd/ • ゲームシナリオは話し言葉が多く豊富な語彙は必要ない → Juman++を採 用
  30. © Cygames, Inc. 表記揺れスコアの詳細 30/63ページ • 参考にした論文をベースに表記揺れのスコアを構築 • 編集距離が小さい →

    スコア大 – 編集距離とは? – 単語Aを単語Bにするために必要な手順の数 – (ABC,BBB)の場合は2 • 出現回数に差がある → スコア大 • 単語の漢字表記が異なるが読みが同じ場合 → スコア大 – 「たこ焼き」「タコ焼き」 単語A/単語B 出現回数 読み 編集距離 表記揺れ たこ焼き/タコ焼き 10/1 たこやき/たこやき 2 大 たこ焼き/カレー 10/8 たこやき/かれー 4 小
  31. © Cygames, Inc. 講演内容 31/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  32. © Cygames, Inc. AWS Lambda上へ実装 32/63ページ • Dockerイメージは使わずに実装 • Juman++の辞書ファイル(430MB)が大きい

    – Lambdaのパッケージサイズの制限にひっかかる • LambdaにファイルシステムのEFSをマウント – 大きいファイルは最初に一度S3へアップロードして、EFSへコピー Lambda S3 EFS 辞書ファイル
  33. © Cygames, Inc. シナリオ執筆ツールへの組み込み 33/63ページ • 表記揺れを調べたいシナリオを選択してAPIへ渡す • 10-30秒程度で結果が戻る •

    表記揺れ検出は全単語をO(N^2)で比較するので重い – 30秒を超えるとインフラ側の制限に引っかる – 後で回避策を導入(誤字検出のところで説明) 結果画面(サンプルシナリオの結果なので、表記揺れ検出として適切な例ではない)
  34. © Cygames, Inc. ユーザーからのフィードバック 34/63ページ • 過去シナリオと比較できるので、プロジェクトに新規で入ったメンバーに好評 • 「動詞」の表記揺れも欲しい –

    こちらも同様に対応 • 表記揺れを調べる単語を指定できる機能を追加 – 漢字か読み仮名で指定
  35. © Cygames, Inc. 作業分担 35/63ページ • 今回も同じ分担 • 機械学習の学習・APIの作成(一人) –

    機能開発(2ヶ月) – デプロイ(1ヶ月) • AWSのインフラ構築(一人) – インフラ担当者(2日) • リソース管理ツールへの機能追加(一人) – ツール開発者(1週間)
  36. © Cygames, Inc. 講演内容 36/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  37. © Cygames, Inc. 誤字検出機能の開発 37/63ページ • シナリオ中に含まれる誤字を検出したい • 機械学習による誤字検出は有料のサービスが複数存在する –

    毎月課金が必要+機密の問題 > 独自に実装してみる • 参考にした論文: – 「Bidirectional LSTMを用いた誤字脱字検出システム」 2019年度人工知能学会全国大会 • こちらを参考にして、新しい自然言語処理モデルで実装
  38. © Cygames, Inc. 検出したい誤字の例 38/63ページ • 社内のユーザーからもらった誤字の例 誤字なし 誤字あり 誤字の種類

    写真を撮ってほしい 写真を取ってほしい 漢字の間違い おはようございます おはいようございます 余計な文字が入っている 掛けてもらった 掛けて貰った 補助動詞が漢字
  39. © Cygames, Inc. 誤字検出アルゴリズムの概要 39/63ページ 文章を誤字なし・ありに分類 形態素解析 単語の出現順を求める 誤字の位置を決定

  40. © Cygames, Inc. 自然言語処理モデルBERTについて 40/63ページ • 2018年10月にGoogleから発表された自然言語処理モデル • 翻訳、文書分類、質問応答などのタスクで当時の最高スコアを達成 •

    今回は「文章分類」「単語の出現順の推論」の2つのタスクを利用 • 2021年の段階では新しいモデルが出ているが…… – BERTは広く利用されている – 日本語の学習済みモデルが複数公開されている
  41. © Cygames, Inc. 文章を誤字なし・ありに分類するモデル 41/63ページ 文章を誤字なし・ありに分類 形態素解析 単語の出現順を求める 誤字の位置を決定

  42. © Cygames, Inc. 文章を誤字なし・ありに分類するモデル 42/63ページ • BERTの文章分類タスクを使用 – ニュース記事などをジャンルごとに分類 –

    (記事、ジャンル)を学習データとして用意 – 記事をBERTへ入力 > ジャンルが出力 • 今回は「誤字なし」「誤字あり」の2種類に分類する • 学習データは2種類 – 誤字なし(ゲームシナリオの文章) – 誤字あり(誤字をあとで加えたもの。後述) • BERT(Base)+TensorFlowで実装 • 形態素解析にSentencePieceを使用 – https://github.com/google/sentencepiece – 少し精度が上がった
  43. © Cygames, Inc. 学習データ用に誤字を作る 43/63ページ • 学習データに誤字を含む文章がほしいので自動生成した • ユーザーからもらった校正のテキストからパターンを抽出 1.

    「よく間違えられる単語リスト」を使って入れ替える(後述) 2. ひらがなに囲まれている「ない」を削除 3. 「っ」を落とす 4. 「が」「を」などの助詞を入れ替える 5. 助詞を落とす 6. ひらがなのABをBABにする (例:いつの間にか > いつの間にかに) 7. ひらがなorカタカナをランダムで1文字落とす
  44. © Cygames, Inc. 「よく間違えられる単語リスト」を使って入れ替える 44/63ページ • 校正のテキストから手動で抽出(全部で150パターン程度) • 今回は文章中の品詞は考慮せずに入れ替えている •

    例:元の文章 > 誤字を入れた文章 – イラストを描いた > イラストを書いた – 予想を超える > 予想を越える 元の単語 入れ替える単語 描いた 書いた 超えた 越えた 乗せて 載せて 上って 昇って 観る 見る
  45. © Cygames, Inc. 文章分類のモデルの学習 45/63ページ • 元の文章と誤字を含む文章を(1:5)で用意してBERTの文章分類で学習 – 学習データの誤字のパターンを増やしたいので、誤字の比率を増やしている •

    学習データは90MB程度 – 867,330行、平均36文字 • 精度は85%程度 • 推論はCPUでも比較的高速
  46. © Cygames, Inc. 誤字検出アルゴリズムの概要 46/63ページ 文章を誤字なし・ありに分類 形態素解析 単語の出現順を求める 誤字の位置を決定

  47. © Cygames, Inc. 単語ごとの出現順を求めるモデル 47/63ページ • 単語ごとの「出現順」を求めるモデル – 単語ごとにMASKして出現順を求める –

    小さいほうが正しい – 出現順=1:元の単語を正しく推論できた場合 • 入力:誤字の入った文章 • 出力:単語ごとの出現順 単語1 単語2 単語3 単語4 単語5 今日 は イラスト を 書いた 単語1 単語2 単語3 単語4 単語5 2 3 30 1 2134
  48. © Cygames, Inc. 単語ごとの出現順を求めるモデルを学習 48/63ページ • BERTの事前学習のように文章(ゲームシナリオ)学習させる – Juman++で形態素解析 –

    単語をランダムに一つMASKして学習 • 学習に使うのは元の文章のみ – 誤字を入れた文章は推論時に使う • PyTorchとJuman++で実装 – BERT(Base)を利用 単語1 単語2 単語3 単語4 単語5 今日 [MASK] イラスト を 書いた
  49. © Cygames, Inc. 単語ごとの出現確率を求めるモデルで推論 49/63ページ • 元の文章、誤字を入れた文章を学習済みモデルへ入力して推論 – 入力:元の文章、誤字を入れた文章 –

    出力:単語ごとの出現確率の順番 • この出力を次のモデルの学習データで使う – 誤字を入れた段階で誤字の位置を覚えておく – 誤字無しの場合は-1 誤字の位置 単語1 単語2 単語3 単語4 -1 1 1 3 10 3 2 3 1204 40 4 2 23 987 8913
  50. © Cygames, Inc. 誤字検出アルゴリズムの概要 50/63ページ 文章を誤字なし・ありに分類 形態素解析 単語の出現順を求める 誤字の位置を決定

  51. © Cygames, Inc. 誤字の位置を求めるモデルとその学習 51/63ページ • 前のモデルの出力結果を学習データとして使う – 入力:誤字の位置、出現順 –

    出力:誤字の位置(誤字がない場合は-1) • ランダムフォレストモデルで学習 – ランダムフォレストは決定木をたくさん集めたもの – 機械学習の分野でよく使われる – scikit-learnの実装を利用 目的変数 説明変数 誤字の位置 単語1 単語2 単語3 単語4 -1 1 1 3 10 3 2 3 1204 40 4 2 23 987 8913
  52. © Cygames, Inc. 誤字の位置を求めるモデルの実行結果 52/63ページ • 精度は35〜45%程度 – 誤字を含む文は形態素解析に失敗するので前後1単語分も許容 –

    扱う誤字のパターンを増やすと精度が下がる – 15%程度で誤字の位置を間違える / 50%程度は誤字の存在を見逃す • 実際に検出できた誤字の例(イベントは大盛況のうちに終わった) • 誤字の位置を間違えた例(素敵な歌詞になったと思う) 単語1 単語2 単語3 単語4 単語5(予測/正解) 単語6 単語7 イベント は 大 盛況 のち に 終わった 単語1(予測) 単語2 単語3(正解) 単語4 単語5 素敵な 歌詞に なた と 思う
  53. © Cygames, Inc. 講演内容 53/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  54. © Cygames, Inc. AWS Lambda上で実装 54/63ページ • TensorFlow, PyTorch, scikit-learnを使用

    – Lambdaのdockerイメージを利用 • dockerイメージは小さいほうが更新が早い – 学習済みモデルはdockerイメージに含めずにファイルシステム(EFS)経由で読み込む – 通常のLambdaの更新よりは時間がかかる > ローカルでしっかりテスト • Lambdaのメモリは一番大きいものを利用 – 今回利用している機械学習モデルは大きい – メモリは最大の10GBを利用 – ランダムフォレストのサイズが大きくなりがち
  55. © Cygames, Inc. 実行が遅いので回避策を導入 55/63ページ • インフラ(API Gateway)の制限時間(30秒)に引っかかる – Lambdaの最大スペックでも1シナリオの誤字検出に40秒程度必要

    – 単語の出現順を求めるモデルが重い • AWS StepFunctionsを利用して非同期呼び出し – AWSで非同期呼び出しを行うための仕組み • 最大10分まで処理を行える – 10分はLambdaの最大のタイムアウト時間 API Gateway Step Functions Lambda ①実行開始 ③結果受取 ②実行待ち API Gateway Step Functions Lambda
  56. © Cygames, Inc. シナリオ執筆ツールのUIを変更 56/63ページ • 処理待ち時間が長いので、実行中のタスク一覧画面を追加 – 処理が終わり次第ステースが変わって結果が見れる –

    過去の実行結果が見れる。実行結果を他人とシェアできる – 表記揺れ機能にも対応 • AIの処理時間を隠蔽 – インフラのコストをおさえつつ、ユーザーの利便性を向上 – 利用頻度が低い機能にはいい選択肢
  57. © Cygames, Inc. インフラ構築を誰がどのように行うか? 57/63ページ • 機械学習向けのインフラ構築はゲーム運用やWebサービス運用とは異なる – インフラ担当でも構築実績がないことがある –

    機械学習エンジニアが試行錯誤できるように、インフラ構築を兼任したほうが話が早い • インフラ構築は未経験だが、機械学習エンジニアがインフラ構築を担当する ことに
  58. © Cygames, Inc. AWS CDKを利用 58/63ページ • Infrastructure as Code(コードによるインフラ構築)

    – AWS CDK:コードベースでAWSの構築を行う環境 – チーム内ではすでに導入済み – 既存の構成のコードに新規分を追加するだけ • 手元で作業が完結しているのでデバッグが圧倒的に早い – 二人に分かれて作業していたら大変だった API Gateway Lambda 既存の構成 API Gateway Step Functions Lambda 今回の構成
  59. © Cygames, Inc. 作業分担 59/63ページ • 今回は機械学習エンジニアがインフラ構築も担当 • 機械学習の学習・APIの作成、AWSのインフラ構築(一人) –

    機械学習モデルの作成(4ヶ月) – インフラ構築(2週間) – デプロイ(1.5ヶ月) • リソース管理ツールへの機能追加(一人) – ツール開発者(2週間)
  60. © Cygames, Inc. 講演内容 60/63ページ • AI導入の経緯・開発環境 • 物体検出・画像認識アルゴリズムを利用した自動タグ付け –

    機械学習モデルの説明(キャラクター・背景) – デプロイ • 表記揺れ機能の開発 – アルゴリズムの説明 – デプロイ • 誤字検出機能の開発 – 機械学習モデルの説明 – デプロイ • まとめ
  61. © Cygames, Inc. まとめ 機械学習モデルについて 61/63ページ • 画像認識・物体検出は既存のものが利用できるので最初の導入としては最適 • 自然言語処理はAIを導入できる余地が大きい

    – そのまま利用できる日本語対応のサービスは少ないので独自開発が必要 – 表記揺れ検出は簡単な割に効果が高い – 誤字検出は精度を上げるのが難しい
  62. © Cygames, Inc. まとめ データの集約・作業分担 62/63ページ • リソース管理ツールなどのデータを集約する場所があると便利 – 学習データを簡単に用意できる

    – 共有フォルダやエクセルに散らばっているデータは利用しずらい – どこかの段階で誰かが時間をかけてデータをツールへ入力する必要がある • 作業分担が必要 – AI開発、インフラ構築、アプリへの組み込み – 一人で全部担当するのは大変 – 作業分担・スケジュールを考えておいた方がよい
  63. © Cygames, Inc. CygamesではAIの力も活用して 最高のコンテンツを作っていきます 63/63ページ

  64. © Cygames, Inc. 以降は補足資料 64/63ページ

  65. © Cygames, Inc. ルールベースの誤字検出も追加 65/63ページ • 校正のテキストを調べるとルールベースで検出できる誤字のほうが多い • 補助動詞に漢字が含まれていたら検出 –

    例:お土産を買って来る、ひとまず初めて見る – 形態素解析の品詞の並びから判定 • 難しい漢字が含まれていたら検出 – 常用外漢字などの漢字のリストを用意して判定 • 機械学習による誤字検出は精度が低い > ルールベースも合わせてリリー スしたほうがユーザーに使ってもらえる
  66. © Cygames, Inc. 最終的な結果 66/63ページ • ここまでの3つのモデルを使ってテスト – 誤字の位置を正しく推論できた:23% –

    誤字の位置を間違えた: 18% – 誤字がないことを正しく推論できた:88% – 誤字を見逃してしまった:60% • 誤字を見逃すケースが多いので改良の余地あり