$30 off During Our Annual Pro Sale. View Details »

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

Cygames
September 01, 2021

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

2021/08/26 CEDEC2021

Cygames

September 01, 2021
Tweet

More Decks by Cygames

Other Decks in Technology

Transcript

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

    View Slide

  2. © Cygames, Inc.
    この講演で得られること
    2/63ページ
    • ゲーム会社へAIを導入した事例をいくつか紹介
    • 画像認識系のAI、自然言語処理のAIの開発
    • AIの学習、インフラ構築、作業分担、デプロイ環境などについて一通り紹介
    • これからAIを導入されるゲーム会社の参考になると思います

    View Slide

  3. © Cygames, Inc.
    自己紹介
    3/63ページ
    • 立福 寛(たてふく ひろし)
    • 前職:コンテンツパイプラインの構築、モバイルゲームの開発・運営など
    • 2019年に株式会社Cygamesへ入社
    • 2020年からAIの開発に着手
    – 前からAIを専門にやっていたわけではない
    – これからAIを導入される方の参考になりそう

    View Slide

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

    View Slide

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

    View Slide

  6. © Cygames, Inc.
    今のチームの紹介
    6/63ページ
    • 開発運営支援 プロジェクト共通基盤チーム
    – 複数のゲームプロジェクトに共通のツールなどを提供するチーム
    – リソース管理ツール、シナリオ執筆ツールなどを開発・サポート
    – ゲームを面白くするためのプロセス改善と組織デザイン(CEDEC2019)

    View Slide

  7. © Cygames, Inc.
    AIを導入した経緯
    7/63ページ
    • 書籍化やWebなども含め、機械学習の導入事例が増えてきた
    – ゲーム開発での導入事例も増え、情報にアクセスしやすくなった
    • AIを導入しやすいチーム
    – データを管理するツールを開発 → データを利用しやすい
    – 複数のプロジェクトにツールを提供 → 開発したAIを利用してもらえる
    • 個人的に興味があった
    – 最初は個人レベルで始めるので、興味のある人のほうがよい
    – ある程度固まった期間を確保してAIに専念

    View Slide

  8. © Cygames, Inc.
    どこへAIを導入するか?
    8/63ページ
    • 一番簡単そうな画像認識から導入
    • リソース管理ツールの自動タグ付け機能を開発

    View Slide

  9. © Cygames, Inc.
    開発環境
    9/63ページ
    • 当初はWindows+GTX1080Tiで開発
    – 動作が不安定
    • Ubuntu18.04+GTX2080Tix2環境へ移行
    – 環境ごとのdockerで作業
    – 安定性が高い、デプロイが楽
    • ローカルPCで学習
    – クラウドのGPUインスタンスはまだ高い
    – 費用を気にしないでいいので担当エンジニアの気が楽(これは結構大きい)

    View Slide

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

    View Slide

  11. © Cygames, Inc.
    物体検出アルゴリズムを利用したキャラクター画像の自動タグ付け
    11/63ページ
    • キャラクターが一人以上含まれる画像を入力 > 名前を返す
    • 複数のキャラクターが含まれるので物体検出アルゴリズムを使う
    • 社内のリソース管理ツールの機能として実装(後述)
    Aさん
    Bさん
    Cさん
    Dさん

    View Slide

  12. © Cygames, Inc.
    リソース管理ツールの紹介
    12/63ページ
    • スペースが分けられる画像・動画のアップローダー
    – チームで開発しているツール
    – 複数のプロジェクトで利用
    – 画像・動画のアップロード・検索・閲覧
    – タグの追加・検索
    – Web APIでリソースの一括ダウンロードが可能(重要!)

    View Slide

  13. © Cygames, Inc.
    物体検出アルゴリズム(SSD)について
    13/63ページ
    • 画像の中に何が含まれるか、領域と名前を検出する機械学習モデル
    – SSD(Single Shot Multibox Detector)
    – オープンソースのPyTorchの実装を使用
    • 学習データ
    – 画像
    – 物体の領域
    – クラス名
    • 推論
    – 入力:画像
    – 出力:領域とクラス名
    Aさん
    Bさん
    Cさん
    Dさん

    View Slide

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

    View Slide

  15. © Cygames, Inc.
    SSDで学習してテスト
    15/63ページ
    • ローカルPCで学習してテスト
    – 1日程度学習
    – キャラクター名を当るテスト:精度は90%前半
    • 複数人が含まれる画像でテスト。精度80%以上
    – 学習データが多いキャラクターは精度が高い(逆も同様)
    – 顔や髪型に特徴が少ない一部のキャラクターは精度が低い
    • 大きくデフォルメされた画像の扱い
    – 学習データに含めると精度が大きく落ちた
    – 混ぜないでモデルを分けた方がよい
    • 左右対称のキャラクターがいる場合
    – 学習時に左右反転して使わない
    • 他の要素について
    – 顔が回転しているケースの扱い
    – 片目が隠れている場合

    View Slide

  16. © Cygames, Inc.
    画像認識アルゴリズムを用いた背景画像の自動タグ付け
    16/63ページ
    • 背景画像にも同様の機能を実装
    • AWS Sagemaker(後述)の画像認識モデルを利用
    • 学習データ
    – 画像数:1400枚(モバイルゲームの背景画像)
    – 分類クラス数:180程度(公園、街中、控え室、etc)
    • 実際のデータでの精度は7割ほど
    タグ:公園 タグ:ライブ会場

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. © Cygames, Inc.
    デプロイ環境を検討(最終的な実装)
    20/63ページ
    • Lambda単体で動かすように変更
    – 最初のオープンソースのSSDの実装を使う
    – 機能を増やすごとにコストが増えない
    – 機械学習エンジニアの気が楽(!)
    • Lambdaのdockerイメージを利用
    – ユーザーのdockerイメージをLambdaで動かせる
    – 最大10GBまで
    – Pythonの機械学習のモジュールを動かすのが非常に楽
    – こちらは後の自然言語処理でも利用

    View Slide

  21. © Cygames, Inc.
    リソース管理ツールへ機能追加
    21/63ページ
    • 画像のアップロード時にタグの予測ボタンを押すと推論実行
    – 実行時間:数秒(初回呼び出し時のみ20秒程度)

    View Slide

  22. © Cygames, Inc.
    作業分担
    22/63ページ
    • 今回はそれぞれの担当が作業
    • AIの学習・APIの作成(一人)
    – 機械学習モデルの作成(2ヶ月)
    – デプロイ(2ヶ月)
    • AWSのインフラ構築(一人)
    – インフラ担当者(1週間)
    • リソース管理ツールへの機能追加(一人)
    – ツールの開発者(1週間)

    View Slide

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

    View Slide

  24. © Cygames, Inc.
    次は表記揺れ・誤字検出機能の開発
    24/63ページ
    • 次のネタを探すために社内でヒアリング
    • シナリオ執筆ツール上で「表記揺れ・誤字」を検出してほしい
    • まず表記揺れ、次に誤字検出を開発

    View Slide

  25. © Cygames, Inc.
    シナリオ執筆ツールとは?
    25/63ページ
    • 社内シナリオライターが使用するWeb上のシナリオ作成環境
    – シナリオの作成・監修・台本の印刷・音声の管理なども行える
    • APIからシナリオが一括で取得できる(今回はここが大きい!)
    – エクセルと比べてフォーマットが完全に統一されている

    View Slide

  26. © Cygames, Inc.
    シナリオ執筆ツールへの表記揺れ機能の開発
    26/63ページ
    • 以下のような表記揺れを検出してほしい
    – 「キャンパス」「キャンバス」(表記揺れではなく誤字)
    – 「一緒」「いっしょ」
    • 日本語の表記揺れについて調査
    • 参考にした論文
    – 「仕様書特有表現の表記揺れを検出するツールの試作と評価」
    • 調査した結果、機械学習よりルールベースのほうが適切
    • 形態素解析+ルールベースでの実装

    View Slide

  27. © Cygames, Inc.
    形態素解析とは?
    27/63ページ
    • 文章を入力すると単語(トークン)ごとに分割
    • 読み仮名、品詞などを取得できる
    • 例:Juman++で「私もあさって日曜最終日」を形態素解析した結果
    見出し 読み仮名 品詞
    私 わたし 名詞
    も も 助詞
    あさって あさって 名詞
    日曜 にちよう 名詞
    最終 さいしゅう 形容詞
    日 ひ 名詞

    View Slide

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

    View Slide

  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++を採

    View Slide

  30. © Cygames, Inc.
    表記揺れスコアの詳細
    30/63ページ
    • 参考にした論文をベースに表記揺れのスコアを構築
    • 編集距離が小さい → スコア大
    – 編集距離とは?
    – 単語Aを単語Bにするために必要な手順の数
    – (ABC,BBB)の場合は2
    • 出現回数に差がある → スコア大
    • 単語の漢字表記が異なるが読みが同じ場合 → スコア大
    – 「たこ焼き」「タコ焼き」
    単語A/単語B 出現回数 読み 編集距離 表記揺れ
    たこ焼き/タコ焼き 10/1 たこやき/たこやき 2 大
    たこ焼き/カレー 10/8 たこやき/かれー 4 小

    View Slide

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

    View Slide

  32. © Cygames, Inc.
    AWS Lambda上へ実装
    32/63ページ
    • Dockerイメージは使わずに実装
    • Juman++の辞書ファイル(430MB)が大きい
    – Lambdaのパッケージサイズの制限にひっかかる
    • LambdaにファイルシステムのEFSをマウント
    – 大きいファイルは最初に一度S3へアップロードして、EFSへコピー
    Lambda S3
    EFS
    辞書ファイル

    View Slide

  33. © Cygames, Inc.
    シナリオ執筆ツールへの組み込み
    33/63ページ
    • 表記揺れを調べたいシナリオを選択してAPIへ渡す
    • 10-30秒程度で結果が戻る
    • 表記揺れ検出は全単語をO(N^2)で比較するので重い
    – 30秒を超えるとインフラ側の制限に引っかる
    – 後で回避策を導入(誤字検出のところで説明)
    結果画面(サンプルシナリオの結果なので、表記揺れ検出として適切な例ではない)

    View Slide

  34. © Cygames, Inc.
    ユーザーからのフィードバック
    34/63ページ
    • 過去シナリオと比較できるので、プロジェクトに新規で入ったメンバーに好評
    • 「動詞」の表記揺れも欲しい
    – こちらも同様に対応
    • 表記揺れを調べる単語を指定できる機能を追加
    – 漢字か読み仮名で指定

    View Slide

  35. © Cygames, Inc.
    作業分担
    35/63ページ
    • 今回も同じ分担
    • 機械学習の学習・APIの作成(一人)
    – 機能開発(2ヶ月)
    – デプロイ(1ヶ月)
    • AWSのインフラ構築(一人)
    – インフラ担当者(2日)
    • リソース管理ツールへの機能追加(一人)
    – ツール開発者(1週間)

    View Slide

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

    View Slide

  37. © Cygames, Inc.
    誤字検出機能の開発
    37/63ページ
    • シナリオ中に含まれる誤字を検出したい
    • 機械学習による誤字検出は有料のサービスが複数存在する
    – 毎月課金が必要+機密の問題 > 独自に実装してみる
    • 参考にした論文:
    – 「Bidirectional LSTMを用いた誤字脱字検出システム」 2019年度人工知能学会全国大会
    • こちらを参考にして、新しい自然言語処理モデルで実装

    View Slide

  38. © Cygames, Inc.
    検出したい誤字の例
    38/63ページ
    • 社内のユーザーからもらった誤字の例
    誤字なし 誤字あり 誤字の種類
    写真を撮ってほしい 写真を取ってほしい 漢字の間違い
    おはようございます おはいようございます 余計な文字が入っている
    掛けてもらった 掛けて貰った 補助動詞が漢字

    View Slide

  39. © Cygames, Inc.
    誤字検出アルゴリズムの概要
    39/63ページ
    文章を誤字なし・ありに分類
    形態素解析
    単語の出現順を求める
    誤字の位置を決定

    View Slide

  40. © Cygames, Inc.
    自然言語処理モデルBERTについて
    40/63ページ
    • 2018年10月にGoogleから発表された自然言語処理モデル
    • 翻訳、文書分類、質問応答などのタスクで当時の最高スコアを達成
    • 今回は「文章分類」「単語の出現順の推論」の2つのタスクを利用
    • 2021年の段階では新しいモデルが出ているが……
    – BERTは広く利用されている
    – 日本語の学習済みモデルが複数公開されている

    View Slide

  41. © Cygames, Inc.
    文章を誤字なし・ありに分類するモデル
    41/63ページ
    文章を誤字なし・ありに分類
    形態素解析
    単語の出現順を求める
    誤字の位置を決定

    View Slide

  42. © Cygames, Inc.
    文章を誤字なし・ありに分類するモデル
    42/63ページ
    • BERTの文章分類タスクを使用
    – ニュース記事などをジャンルごとに分類
    – (記事、ジャンル)を学習データとして用意
    – 記事をBERTへ入力 > ジャンルが出力
    • 今回は「誤字なし」「誤字あり」の2種類に分類する
    • 学習データは2種類
    – 誤字なし(ゲームシナリオの文章)
    – 誤字あり(誤字をあとで加えたもの。後述)
    • BERT(Base)+TensorFlowで実装
    • 形態素解析にSentencePieceを使用
    – https://github.com/google/sentencepiece
    – 少し精度が上がった

    View Slide

  43. © Cygames, Inc.
    学習データ用に誤字を作る
    43/63ページ
    • 学習データに誤字を含む文章がほしいので自動生成した
    • ユーザーからもらった校正のテキストからパターンを抽出
    1. 「よく間違えられる単語リスト」を使って入れ替える(後述)
    2. ひらがなに囲まれている「ない」を削除
    3. 「っ」を落とす
    4. 「が」「を」などの助詞を入れ替える
    5. 助詞を落とす
    6. ひらがなのABをBABにする (例:いつの間にか > いつの間にかに)
    7. ひらがなorカタカナをランダムで1文字落とす

    View Slide

  44. © Cygames, Inc.
    「よく間違えられる単語リスト」を使って入れ替える
    44/63ページ
    • 校正のテキストから手動で抽出(全部で150パターン程度)
    • 今回は文章中の品詞は考慮せずに入れ替えている
    • 例:元の文章 > 誤字を入れた文章
    – イラストを描いた > イラストを書いた
    – 予想を超える > 予想を越える
    元の単語 入れ替える単語
    描いた 書いた
    超えた 越えた
    乗せて 載せて
    上って 昇って
    観る 見る

    View Slide

  45. © Cygames, Inc.
    文章分類のモデルの学習
    45/63ページ
    • 元の文章と誤字を含む文章を(1:5)で用意してBERTの文章分類で学習
    – 学習データの誤字のパターンを増やしたいので、誤字の比率を増やしている
    • 学習データは90MB程度
    – 867,330行、平均36文字
    • 精度は85%程度
    • 推論はCPUでも比較的高速

    View Slide

  46. © Cygames, Inc.
    誤字検出アルゴリズムの概要
    46/63ページ
    文章を誤字なし・ありに分類
    形態素解析
    単語の出現順を求める
    誤字の位置を決定

    View Slide

  47. © Cygames, Inc.
    単語ごとの出現順を求めるモデル
    47/63ページ
    • 単語ごとの「出現順」を求めるモデル
    – 単語ごとにMASKして出現順を求める
    – 小さいほうが正しい
    – 出現順=1:元の単語を正しく推論できた場合
    • 入力:誤字の入った文章
    • 出力:単語ごとの出現順
    単語1 単語2 単語3 単語4 単語5
    今日 は イラスト を 書いた
    単語1 単語2 単語3 単語4 単語5
    2 3 30 1 2134

    View Slide

  48. © Cygames, Inc.
    単語ごとの出現順を求めるモデルを学習
    48/63ページ
    • BERTの事前学習のように文章(ゲームシナリオ)学習させる
    – Juman++で形態素解析
    – 単語をランダムに一つMASKして学習
    • 学習に使うのは元の文章のみ
    – 誤字を入れた文章は推論時に使う
    • PyTorchとJuman++で実装
    – BERT(Base)を利用
    単語1 単語2 単語3 単語4 単語5
    今日 [MASK] イラスト を 書いた

    View Slide

  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

    View Slide

  50. © Cygames, Inc.
    誤字検出アルゴリズムの概要
    50/63ページ
    文章を誤字なし・ありに分類
    形態素解析
    単語の出現順を求める
    誤字の位置を決定

    View Slide

  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

    View Slide

  52. © Cygames, Inc.
    誤字の位置を求めるモデルの実行結果
    52/63ページ
    • 精度は35〜45%程度
    – 誤字を含む文は形態素解析に失敗するので前後1単語分も許容
    – 扱う誤字のパターンを増やすと精度が下がる
    – 15%程度で誤字の位置を間違える / 50%程度は誤字の存在を見逃す
    • 実際に検出できた誤字の例(イベントは大盛況のうちに終わった)
    • 誤字の位置を間違えた例(素敵な歌詞になったと思う)
    単語1 単語2 単語3 単語4 単語5(予測/正解) 単語6 単語7
    イベント は 大 盛況 のち に 終わった
    単語1(予測) 単語2 単語3(正解) 単語4 単語5
    素敵な 歌詞に なた と 思う

    View Slide

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

    View Slide

  54. © Cygames, Inc.
    AWS Lambda上で実装
    54/63ページ
    • TensorFlow, PyTorch, scikit-learnを使用
    – Lambdaのdockerイメージを利用
    • dockerイメージは小さいほうが更新が早い
    – 学習済みモデルはdockerイメージに含めずにファイルシステム(EFS)経由で読み込む
    – 通常のLambdaの更新よりは時間がかかる > ローカルでしっかりテスト
    • Lambdaのメモリは一番大きいものを利用
    – 今回利用している機械学習モデルは大きい
    – メモリは最大の10GBを利用
    – ランダムフォレストのサイズが大きくなりがち

    View Slide

  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

    View Slide

  56. © Cygames, Inc.
    シナリオ執筆ツールのUIを変更
    56/63ページ
    • 処理待ち時間が長いので、実行中のタスク一覧画面を追加
    – 処理が終わり次第ステースが変わって結果が見れる
    – 過去の実行結果が見れる。実行結果を他人とシェアできる
    – 表記揺れ機能にも対応
    • AIの処理時間を隠蔽
    – インフラのコストをおさえつつ、ユーザーの利便性を向上
    – 利用頻度が低い機能にはいい選択肢

    View Slide

  57. © Cygames, Inc.
    インフラ構築を誰がどのように行うか?
    57/63ページ
    • 機械学習向けのインフラ構築はゲーム運用やWebサービス運用とは異なる
    – インフラ担当でも構築実績がないことがある
    – 機械学習エンジニアが試行錯誤できるように、インフラ構築を兼任したほうが話が早い
    • インフラ構築は未経験だが、機械学習エンジニアがインフラ構築を担当する
    ことに

    View Slide

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

    View Slide

  59. © Cygames, Inc.
    作業分担
    59/63ページ
    • 今回は機械学習エンジニアがインフラ構築も担当
    • 機械学習の学習・APIの作成、AWSのインフラ構築(一人)
    – 機械学習モデルの作成(4ヶ月)
    – インフラ構築(2週間)
    – デプロイ(1.5ヶ月)
    • リソース管理ツールへの機能追加(一人)
    – ツール開発者(2週間)

    View Slide

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

    View Slide

  61. © Cygames, Inc.
    まとめ 機械学習モデルについて
    61/63ページ
    • 画像認識・物体検出は既存のものが利用できるので最初の導入としては最適
    • 自然言語処理はAIを導入できる余地が大きい
    – そのまま利用できる日本語対応のサービスは少ないので独自開発が必要
    – 表記揺れ検出は簡単な割に効果が高い
    – 誤字検出は精度を上げるのが難しい

    View Slide

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

    View Slide

  63. © Cygames, Inc.
    CygamesではAIの力も活用して
    最高のコンテンツを作っていきます
    63/63ページ

    View Slide

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

    View Slide

  65. © Cygames, Inc.
    ルールベースの誤字検出も追加
    65/63ページ
    • 校正のテキストを調べるとルールベースで検出できる誤字のほうが多い
    • 補助動詞に漢字が含まれていたら検出
    – 例:お土産を買って来る、ひとまず初めて見る
    – 形態素解析の品詞の並びから判定
    • 難しい漢字が含まれていたら検出
    – 常用外漢字などの漢字のリストを用意して判定
    • 機械学習による誤字検出は精度が低い > ルールベースも合わせてリリー
    スしたほうがユーザーに使ってもらえる

    View Slide

  66. © Cygames, Inc.
    最終的な結果
    66/63ページ
    • ここまでの3つのモデルを使ってテスト
    – 誤字の位置を正しく推論できた:23%
    – 誤字の位置を間違えた: 18%
    – 誤字がないことを正しく推論できた:88%
    – 誤字を見逃してしまった:60%
    • 誤字を見逃すケースが多いので改良の余地あり

    View Slide