プロジェクト報告書（最終） Project Final Report

提出日 (Date) 2020/1/22

AI するディープラーニング
AI love Deep Learning
川村周也 Shuya Kawamura
1

背景
昨今, 社会の情報化が加速度的に進展し, 人々はそ3

課題解決のプロセスとその内容

3.1

グループ A: アニメ作品のレコメンド支援の大量の情報を的確に活用できることが求められてい

3.1.1

る. また, 様々な情報が混在し, 肥大化し続けている中

先行サービスの調査で, 本質的な内容をより効率よく抽出する手段が考えアプリケーション開発を行うにあたって, 先行サーられるようになった. そこで注目されている技術としビスの調査を行なった. Annict[2], あにこれ [3] は,て機械学習がある. 機械学習は大量のデータから有用ユーザが作品に評価をつけ, その情報を他のユーザがな規則や特徴を抽出できる. 機械学習の手法の中でも参考にすることで, どの作品を見るか決める判断材料

Deep Learning がさらに注目を集め, 様々な企業や団を確保できるサービスであった. WATCHA[4] はレ体の研究で導入されるようになった. Deep Learning

コメンド作品情報を AI が提示するものであった. ことは, ニューラルネットワークという人間の神経構造れらの調査を元に我々が開発するアプリケーション,を模した機械学習モデルのうち隠れ層と呼ばれる層 「AnImediate」を考えた.
をより深く重ね合わせたものを指す. 層を重ねることで, データを分析するために必要な要素とその関係を,3.1.2より多くかつ複雑に蓄積することができるようになっ現状における問題点た. 深層学習の精度は用意するデータ量に左右される

私たちは, 日常会話の中で様々な作品のレコメンドため, 限られたデータ量でより精度を上げるための研をしあう機会がある. 本プロジェクトでは, アニメの究開発が進められている. 本プロジェクトでは, このレコメンドについて考える. アニメは, 2000 年ごろ

深層学習を用いて日常の問題解決に挑むことを全体から毎年 200 以上の作品が生み出され, 現在では約の目的とする.

10000 作品ものアニメが存在する. また, アニメを鑑賞する人の中で, いままでに見た作品数が 100 作品を2超える人も少なくない. それだけ膨大な量の作品情報

基礎知識の習得とテーマ決定を元に人間が正確にレコメンドを行うことは困難で4 月から 5 月にかけて, 勉強会を行い, 参考書 [1] をある. これらの現状から, レコメンドの際に作品が相用いて DeepLearning の仕組み・原理を実際に実装し手の好みに合致しないことや, すでに見た作品をレコながら学んだ. 事前に参考書の章を一つずつ各自自習メンドしてしまうなどの問題が生じ, レコメンドがスし, プロジェクト学習の時間内に不明な点を確認しなムーズに進まない場合や, 失敗する場合がある.

がら主要な部分を章ごとに担当を分けて解説などをした. 6 月の初めに, 本プロジェクトで取り組む活動

3.1.3

について, Deep Learning を活用してどのようなこと目標設定

問題を解決するために, アニメのレコメンドを支援がしたいのかを話し合った. その際, ポストイットを用いて 100 種類以上の題材を提案した. その中で, メするアプリケーションを開発することにした.

ンバーごとに気になったものを 2 つ決め, それについそこで, グループの目標としてての先行研究, 具体的な取り組み方について考えた.
その後, メンバーごとにプレゼンテーションを行った.

• アプリケーション上で使用するアニメ情報の収集

各メンバーのプレゼンテーション後, 最も有用な意見• アニメの視聴管理機能, 評価登録機能を持ったを話し合い, 本プロジェクトで行う活動の内容を「アiOS アプリケーションの開発ニメ作品のレコメンド支援」「感情分析を用いたネッ• 実際の評価を入力とし, 未評価作品に対する予ト小説のオススメ」の 2 つに絞った.

測評価を出力するモデルの作成の 3 つを掲げた.

1

3.1.4応用したものがあり, そのなかの手法に行列分解と次アプリケーション開発元削減というものがある.

前期は基本的に MVC のアーキテクチャを意識しなビッグデータを扱う解析には二つの大きな問題が起がらプロトタイプ開発を進めた.

こる. ひとつは計算量の過多, もうひとつが「次元のまず初めに, Annict[2] の提供する API, スクレイピ呪い」と呼ばれる現象が起きてしまうことである. こング で収集したデータを元に Firebase[5] 上にアニメの「次元の呪い」は特徴量の過多による精度の悪化がのデータベースを作成した. そして Firebase[5] から発生することを意味する. 行列分解と次元削減はこれデータを取得し, Realm で「見た」「見ている」「見たらの問題を解消することができるため, 特徴抽出を大い」「見ていた」の 4 つの視聴ステータスに分類でき量に行う解析に不可欠な技術となっている. 本来 1 つるような視聴管理アプリケーションとしての機能を作の 2 次元行列 X であったユーザの行動履歴を, 2 つの成した.

行列 U, V の積で近似すると考える. このとき以下にUI の作成は画面定義書を元に組み立てることでス 示す式 1 の条件を満たす行をもつ行列 U, V を求める.
ムーズに作業を進めることができた. 次に検索機能の これを行列分解という.

実装を行った. タイトルや放送年で検索できるようにX ≃U ×VTすることで視聴管理機能の利便性が向上した. そして(1)交換機能を実装した.

X を m × n の行動履歴を表す行列だとする. このと前期の時点ではレコメンドモデルができていなかっ き 2 つの行列 U, V は m > k > 0, n > k > 0 を満たすたので視聴情報を交換し, 互いに片方しか見ていない 定数 k を用いて, それぞれ大きさが (m × k), (n × k)アニメと両方が見たアニメを結果として表示させた.となる. この k の値を小さくすることを次元削減とい後期は, 通信が安定せず, アプリケーションが頻繁う. 次元削減により, 再構成する際の計算量を減らし,にクラッシュするといった問題を解決するためにアー計算時間を大幅に短縮する効果がある. 再構成した行キテクチャを見直し, Redux を採用した. また, 大列の要素と元の行列の同じ要素を比較し, これを引数量のファイルを新たに生成する必要があったため, メとした最適化関数を計算することで元行列への近似

タプログラミングを導入し, ファイルとコードを自動を行う. この再構成された行列は要素すべてが埋まっ生成することで作業の効率化を図った. Python 班がた状態であり, この工程を行列補完という. 行列補完作成したモデルを組み込む作業も行った. モデルはそのものがレコメンドシステムのモデルに利用されTensorFlow Lite[6] 形式のモデルを Firebase[5] の機ることは多々あり, その補完手法も多岐にわたる. 今

能の 1 つである MLkit を用いて組み込んだ.

回補完する疎行列は, 収集した既存のアニメ評価情報となる.

3.1.5

開発に当たって, 行列補完の試験実装用に NMF(Non-モデル開発

negative Matrix Factorization)[7] での補完, 本実装用モデルの目的は, アニメに関する情報をもとに, ユーに GC-MC(graph convolutional matrix completion)[8]ザのアニメの好みを把握することである. 再検討によによる補完を利用した. NMF[7] は行列補完のなかでり, アニメの特徴を表す情報と, 既存の評価情報を用も実装が安易だったため, 行列補完モデルの試験実装いた行列補完をもちいることになった.に使用した.

行列補完は疎行列に対し, 数少ない既存の要素から再検討において GC-MC[8] を使うことになった主空になっている要素を尤もらしい予測値で補完する技

な理由は術である. この技術は協調フィルタリングで用いられ• 行列補完による予測評価の生成がアプリケーショるような行列分解と次元削減, およびその再構成で行ンの趣旨に合致すること.

列を人工生成するものである. 成分数の多い疎行列を• アニメやユーザの特徴を付加情報としてデータ補完するには多くの行列計算が必要となる.

セットに追加し, 予測に反映できること.

協調フィルタリングは, 購買やレビューなどの行動履歴をもとにユーザの嗜好や行動を, コンテンツを尺の 2 点である.

度として数値化する. その相関関係からコンテンツのレコメンドを行う代表的な手法である. (中間まで検3.2討していた k 近傍法もレコメンドとして利用可能で,グループ B: 感情分析を用いたネット小説のオススメ

協調フィルタリングに似た働きをする. しかし, k 近傍法はあらかじめそのラベルとなる変数を与えた上3.2.1で分類するアルゴリズムなので, 欠損値の推定は行わ

該当分野の現状・従来例

現在，インターネット上にはさまざまなレコメンれない. ) その協調フィルタリングにも様々な手法をデーションサービスが存在する．例えば，Google の2「Google 広告」や Amazon の「あなたへのおすすめ」 の API である「Watson Tone Analyzer」の 2 つであなどの Web サービスや，個人的に作られた Web サる．その中で，「Watson Tone Analyzer」は日本語にイトがある．Web サービスでは，今までに購入した対応したものがなく，これは利用しないことにした．

ものや閲覧記録などをもとにユーザが興味を持ちそうなものをピックアップしてオススメする．また，個3.2.5

人的に作られた Web サイトでは，そのサイトの作成

本文の感情分析

者個人が気に入った商品をオススメしたり，ジャンルWord2vec では，2 つの単語間の類似度を求められごとに分かれたものから最も人気のものをオススメる．これで求められる類似度は，1.0 に近づくほど単語したりする．

同士が類似しており，-1.0 に近づくほど単語同士が類似していないことを意味する．まずはこの Word2vec

3.2.2の機能を用いて，学習させた全ての単語と 4 感情との現状における問題点類似度を求めた．以下に単語と感情との類似度の計算結果の例を示す．

オススメの対象を一般的な小説に限定すると，これをオススメする Web サービスはいくつか存在する．
しかし，ジャンルにとらわれていたり，オススメ内に

表 1: 単語と 4 感情との類似度計算のイメージ

過去に読んだことのある作品が紛れ込んでいたりす

涙笑顔

激怒る．さらに対象をネット小説にまで限定すると，これ喜び0.1

0.9-0.7に関するアプリケーションは電子書籍リーダーしか怒り

-0.2

0.1

0.8なく，オススメ機能は備わっていない．ネット小説と哀しみ

0.8-0.6-0.5は，一般的にインターネット上の小説投稿サイトで公楽しみ

0.2

0.7

0.3

開されている小説であるが，ここでは「小説家になろう [9]」という小説投稿サイトの小説とする．
その後，感情ごとに単語と類似度の組み合わせをリスト化し，これを類似度リストとした．小説の本文は，3.2.3

本グループにおける目的

まず全ての話を結合して 1 つのネット小説に対して 1

本グループの目的は 2 つある．1 つ目は，ネット小つのテキストファイルにした．その後そのテキストを説の内容を感情分析し，ネット小説をオススメするシ分かち書きしネット小説を単語リストに編集した．

ステムを開発することである．内容を分析すること

次に，単語リスト内の単語を 1 つずつ 4 感情それで，従来のオススメよりもパーソナライズされたオスぞれの類似度リストと照合することでネット小説の単スメが可能になるはずである．2 つ目は，この機能を語リストを類似度を表す数値リストに変換した．これ

Android アプリケーション（以下，アプリケーション が感情分析の具体的な流れである．ただし感情分析のと表記）として実装することである．アプリケーショ 際に，ネット小説に含まれる全単語のうち Word2vecン化することによって，このシステムをより簡単にが学習していない単語が 5 ％程度あった．これは今回利用できるようになるはずである．ネット小説の感情使用せず，残りの約 95 ％の単語を感情分析に用いた．

分析およびネット小説のオススメには Deep Learningを用いる．ここでの感情分析とは，ネット小説の本文3.2.6

判別用モデルの作成の単語と感情を表す単語との関連性をそれぞれ数値化することである．感情分析は，既存のモデルであユーザにネット小説を的確にオススメするために，る Google の「Word2vec[10]」で行い，ネット小説のオススメの判別用モデルを作成した．入力は小説デー

オススメは，CNN（Convolutional Neural Network） タの元となる感情データとユーザデータの元となる感情データとした．また，出力はユーザに入力した小説で行う．
をオススメすべきかそうでないかの判定とした．このモデルでは，実際に「小説家になろう」のユーザ（以3.2.4

手法の検討下，なろうユーザ）がネット小説を評価した情報を学習させた．判別用モデルの入出力を図 1 に示す．

このテーマを踏まえて，各自で感情分析の手法を小説家になろうでは，ネット小説を文章とストー調べ試行した．まずデータを取得するため，Web スクレイピングを用いてネット小説の文章を取得した． リーのそれぞれの観点から最大 5 ポイント，合計 10
この Web スクレイピングで，「なろう API」が最もポイントで評価できる．このデータをなろうユーザ優れた手法であると判明した．また，試した手法は100,000 人分収集した．データセットのユーザデータ「Word2vec」と単語の辞書をベースとしたもの，IBMの元となる感情データは，ユーザが高い評価をつけ3際にアプリケーションを触ってもらうことができた.
実際にリリースして欲しいなどの好意的な感想をもらうことができた.

5
図 1: 判別用モデルの入出力

今後の課題
A グループでは, 今回構築した, レコメンドシステムが結果を出力するまでに非常に時間を有するモデたネット小説の感情データを平均して作成した．小説

ルであった. そのため, 対面による Bluetooth 通信でデータの元となる感情データはデータベースに保存の交換は, 非常に非効率である可能性が挙げられる,されているものとした．ラベル付けには評価ポイント

また, 事前準備不足やスケジュール管理がうまくいっを用いた．最大 10 点の評価ポイントで，10 点をつけていなかったことによる時間不足でチューニング作業たネット小説をオススメすべきと，それ以外をオススや評価を行う時間がなかったことが挙げられる. した

メすべきでないとラベル付けした．

がって, これらの問題を解消しプロジェクトを成功さ

判別用モデルは，2 つの感情データを入力とする 2せるためにも, 事前準備やスケジュール管理が非常に分類問題である．また，入力の形式が画像の入力形式重要であると考える.と同様に 3 次元の配列になっている．そのため，全結合層の他に畳み込み層を組み込んだ CNN を構築した．
モデルを構築したあと，モデルでの最適なハイパーパ

B グループでは, オススメのモデルを最後まで作り上げアプリケーションに組み込むこと，オススメのシステムの評価実験を細かく行い改良を行うことラメータを求めるためにグリッドサーチを行った．そが挙げられる．オススメのシステムの改良としては，の結果，正解率が 70 ％程度のモデルが完成した．

ニューラルネットワークの層の数やネットワークの種類など，試していないものが沢山あるので，さらにい

3.2.7

アプリケーションの概要

くつかのモデルを作り試してみることが必要である．
また，そのモデルをアプリケーションに組み込みアプ私達が開発したアプリケーションは，ネット小説をリケーションの評価も行う必要もある．

感情分析した結果をもとにユーザにネット小説をオススメするアプリケーションである．このアプリケー
ションは，約 3,500 件のネット小説のデータが登録さ参考文献れており，それぞれのネット小説の感情グラフを作品[1] Python と Keras によるディープラーニング:
Francois Chollet (著), 巣籠 悠輔 (訳), 株式会社クイー
プ (翻訳), マイナビ出版, 2018 年
る．また，好きな本や嫌いな本の登録を行うことで，名や作者名，あらすじなどとともに見ることができあなたへのオススメやユーザグラフが表示されるよ[2] Annict, 2019 年 7 月 17 日 アクセス, [online] https://annict.jp/

うになる．

[3] あにこれ, 2019 年 7 月 1 日 アクセス, [online] https://www.anikore.jp/

アプリケーションの名前は，感情分析を使って本をオススメするアプリケーションであるため，感情を意味する英単語である「emotion」と本を意味する「book」の２つの単語を組み合わせた「EmoBooks」とした．

4[4] WATCHA, 2019 年 7 月 1 日 アクセス, [online] https://watcha.com/[5] ﬁrebase, 2020 年 1 月 21 日アクセス, [online] https://firebase.google.com/?hl=ja[6] TensorFlow Lite, 2020 年 1 月 21 日アクセス, [online]
https://www.tensorflow.org/lite?hl=ja

まとめ[7] scikit-learn で Non-negative Matrix Factorization(NMF),[online]https://qiita.com/
takechanman1228/items/6d1f65f94f7aaa016377

本プロジェクトでは Deep Learning を用いて, 日常生活における問題解決のためのモバイルアプリケー[8] Rianne van den Berg, Thomas N. Kipf, ThomasN. Kipf, Graph Convolutional Matrix Completion,(2017)

ションを開発した. A グループは, 個人間でアニメ作品をレコメンドする際, 相手ユーザにレコメンドすべ[9] 小説家になろう, 2020 年 1 月 8 日アクセス, [online]
https://syosetu.com

き作品を提案する iOS アプリケーションを開発した.

B グループは, 小説の本文の感情の推移を元に, ネッ[10] gensim,
2020 年 1 月 8 日 ア ク セ ス,
「models.word2vec-Word2vec embeddings」,[online]https://radimrehurek.com/gensim/models/word2vec

ト小説のレコメンドを行う Android アプリケーションを開発した. 両グループともモバイルアプリケーションは完成し, 発表会ではデモを用いて聴講者に実4