Help us understand the problem. What is going on with this article?

次世代人工知能の初歩、幼児の言語能力を一部実現!画像・動画機械学習

株式会社massive lnggの古川です

「動画から学ぶことこそが人間の知能を超える革新的AIを生む」
という考えを基にして開発した
今回、幼児の言語能力≒人間のように思考する知能
初歩の一部をデモンストレーションした
オープンソースソフト"Child Bot Marc"を公開しました

ここに至るまでの過程とどんな未来のテクノロジーに続くのかを含めて解説します

従来型の「Siri」や「りんな」などのチャットシステムでは
解答できないであろう質問にも視覚情報を記憶・知識とすることで
正確に答えられる次世代言語処理システムです
(もちろんSiriやりんなが現代最高技術の結晶であり目的もそれぞれ異なることは確かです)

コードは以下のgithubリポジトリにあります
https://github.com/furukawaMassiveReborn777/ChildChatbot

何が新しいのか?

「イヌよりネコの方が小さいですか?」
このタイプの質問には従来型のシステムで答えるのは難しいです

りんなでこの質問をすると「子猫」という返答がきました

これは単語上、言語的にそれっぽい解答を返すシステムであるため
事実に基づいて回答するシステムではないからこうなるのでしょう

今回の"Child Bot Marc"では
「イヌよりネコの方が小さいですか?」に対しては
「はい、その場合が多いです」といった答えが返ってきます

その理由は従来の「文章だけから学び文章で答える」のではなく
「画像・動画など視覚情報を思い出して答える」 ためです

今回開発したシステムで何ができるかを説明は以下の通りです
ここで言う「幼児の言語能力」は
おおよそ2〜3才くらいを想定していて
3語文と言われるその名の通り
3つくらいの単語で構成されるような文章
(例えば「イヌ(は)ネコ(より)大きい」)を対象として
「大きい、小さい」や「高い、低い」などの概念を
視覚情報を記憶・知識とするシステムによって
答えられるようにしたものです

では具体的に現在の視覚認識技術の最前線と
どうやってやっているのか?未来にどんなことが起きうるのか?などを説明していきます

視覚認識技術の最前線

(先に仕組み・結果を知りたい方はスキップ)

はじめに「動画を使って知能を育てたい」という思いを原点に今までの研究を調査しました。

そこでまず気づいたのが「画像だけでも多くの知識を学ぶことができる」ということであり

まず画像からどう知識を学習するか?という視点から見た関連技術が以下の通りです

・Visual Genome: Connecting Language and Vision Using Crowdsourced Dense Image Annotations
genome1.png
[1]より引用

こちらは今回のBotシステムの画像としての知識源としても使用している
visual genomeデータセットというもので
よくimagenetなどである「画像1→車、画像2→イヌ」とかではなく
画像全体で起きていることを
objectごとに領域を示した上でその関係性も示した「scene graph」というもので詳細に説明しています
上の例のように「man」が「bench」に「sits on」しているなどの小さなscene graphから
いくつものobjectの関係が数珠つなぎになっている大きなscene graphまであります

・Visual Translation Embedding Network for Visual Relation Detection vtranse.png

[2]より引用
ニューラルネットワークで物体同士のrelation(関係性)を
判定するVTransEと呼ばれる技術が紹介されています
"person"と"elephant"の関係は"ride"であるとか
"elephant"と"person"より"taller"であるなど判定可能です。
画像モードではこちらの技術を主体的に取り入れてシステムを構築しました。

・Image Generation from Scene Graphs
scenegraph.png
[3]より引用

実はrelationの判定より現段階ではscene graph=画像全体の関係性
構築する技術もかなり開発されており
この論文のようにさらにscene graphから画像を生成するというものまで登場しました

この他にも多くの先行研究があるのですが主要なものを手短に示しておきます

・Predicting Visual Features from Text for Image and Video Caption Retrieval[4]
Word2VisualVecと呼ばれるまさに、文章と視覚情報の架け橋になるようなベクトル生成技術が紹介されています
文章の特徴量を画像の特徴量を見本に学習させます

・FVQA: Fact-based Visual Question Answering[5]
画像の見たままの状態を答えるのではなく、画像から関連する事実は何か?
などを答えられるように試みたVQA論文です

あと画像を中心に視覚理解・知識抽出に関わる論文は
参考文献[6][7][8][9]などがあります

知識・知能をどう捉えるべきか?

これらの先行研究と合わせて
「どうすれば日常会話をコンピュータの機能で再現できるか?
「幼児はどうやって言葉・知識を学んでいるのか?」などから併せて
私がたどり着いた機械で知識・知能獲得するための区分が
獲得が簡単だと思われる順で次の通りです

非時間的視覚概念(non-temporal visual concept)

画像から学習できる「色」や「形」などの概念です

時間的視覚概念(temporal visual concept)

もちろん画像には「時間」の概念はありません
「時間的」な概念は唯一動画から学ぶことができます

(例)休む、急ぐ、昼夜

時間的非視覚概念(temporal non-visual concept)

日常会話など人間の思考表現方法の再現を考えたとき難しいと思われるのが
視覚に現れない高次抽象概念の獲得です

(例)法律、数式など

また、機械的には
「見たままの具体的な状態を表しているか」「もっと抽象的な状態を表しているか」に大きな差があると考えています
例えば次の画像の猫は何をしているでしょう?

CC BY 4.0 © Stanford University

「寝ている」が見たままの具体的な状態で
「休んでいる」がより高次な抽象的な状態でしょう

これはまだ視覚的に「休んでいる」状態が表現されているので学習はしやすそうですが
例えば「ルール違反」や「数式」などそういう目に見えない
より抽象的な概念はどう習得するのか?と考えました

その答えとして 十分な数の具体的な概念の学習から抽象的な概念が獲得できる と仮説を立てました

例えば「ルール違反」なら
・車が車線からはみ出している
・サッカーでハンドをしている・・・etc
といった視覚的概念を十分な量、学習することで
ラベルを必要とするか、もしくはラベルを必要としなくても自動的に
抽象概念を獲得するのではないかと考えました

今回のボットシステムには「画像記憶モード」と「動画記憶モード」がありますが
この抽象概念を自動獲得したいという考えを基に「動画知識モード」において使用している
新しい「準抽象概念動画データセット(semi Abstract Concept Video Dataset:sACVD)」を作成しました
動画に関する詳しい実験はこの記事の一番下のリンクからご覧ください

幼児言語能力ボットの仕組み・コード

コードは以下のgithubリポジトリにあります
https://github.com/furukawaMassiveReborn777/ChildChatbot

「画像記憶モード」と「動画記憶モード」の2つで異なる仕組みが使われています

言語入力処理

入力"The cat is smaller than the dog?"
という入力があった場合、nltkライブラリを使って
名詞と対象となる単語が含まれていれば抽出します

上記の入力は["cat", "smaller", "dog"]のような形に変換されます

"... when you hear ~?"の形式の入力のみ
動画記憶モードに切り替え ~ 部分を抽出します

ニューラルネットの言語モデルを使ってより正確な入出力を行うこともできますが
そこが本質ではないので軽量さを重視して作りました

画像記憶(を活用して回答する)モード

こちらの主体となる技術は上の項で説明しましたが
"Visual Translation Embedding Network for Visual Relation Detection"で
発表されたVTransEという画像内のobject同士の関係性を判断する技術です

処理の流れは以下の通りです
(前処理)
A1.azureを使って画像クロール(image_search.py)
A2.azureを使って画像内のオブジェクトを検出(vision_detect.py)
A3.azureで検出されたオブジェクト情報(領域boxとobject名)をVTransEで読み込めるように加工(azure_reldata.py)
(relation detect)
B1.質問として入力された名詞のオブジェクト同士の関係(例えば"cat"と"dog")を評価
B2.4段階の尺度で確信度を得て、出力に反映する

B1.でsmaller,bigger,taller,lowerに関しては
VTransEではなくシンプルなニューラルネットが使われています(main_simple.py)

動画記憶(を活用して回答する)モード

このボットシステムにおけるメインは上記の画像記憶モードですが
アカデミックな新規性はこちらの動画記憶モードの方にあると考えています

今回作成した準抽象概念動画データセット(semi Abstract Concept Video Dataset:sACVD)から学習した
動画ベクトルによって質問で尋ねられている言葉に一番近い概念を
コサイン類似度で評価して返答するようになっています
(例)"basketball" -> "handball", "free kick"を出力するなど

より抽象的、より高次な概念の自動獲得を目指した取り組みです
詳しくは下の方の記事リンクをご覧ください

幼児言語能力ボットの結果

画像記憶モードのrelation detect精度

2つのモデルでそれぞれ3つと6つのrelationのdetectを担当しています
(3クラス分類)

relation 精度(%)
drive 100.0
sleep on 38.3
drink 85.6

(6クラス分類)

relation 精度(%)
grow in 59.9
ride 84.0
eat 82.4
fly in 90.1
wear 50.0
carry 73.8
eat 82.4

シンプルなニューラルネットを使ったsmaller, tallerの精度は以下の通りです
(smallerかそうでないか、などの2クラス分類)

relation 精度(%)
smaller 95.0
taller 100.0

(こちらはクラス分類精度が高くないクラスでも
最終的には「そのクラスか」「そうでないか」を得るための
バイナリ分類問題に置き換わるので問題ないと考えています)

会話の成功例

以下のような会話応答を実現することができました

childbotscreen.png

入力:Does a man rides on an elephant?  
ボットの答え:that's right  
入力:A woman is smaller than a cat?  
ボットの答え:that's wrong  
入力:Does a man wears a hat?  
ボットの答え:Mostly, yes  
入力:A house is taller than a flower?  
ボットの答え:that's right  
入力:Does a woman carries a bag usually?  
ボットの答え:In most cases, yes  
入力:A cat is smaller than a car?  
ボットの答え:not likely  
入力:Does a man rides on a motorcycle?  
ボットの答え:Yes, certainly  
入力:Does a cat sleeps on a sofa?  
ボットの答え:In most cases, yes  
入力:A cat is taller than a woman?  
ボットの答え:Mostly, no  

ボットの改善すべき課題

  • まずrelation detectなどに入力する前に
    名詞や他の語句検出がうまくいっていないケースが見られます

  • 次にazureのobject detectがうまくいかないケース
    こちらはazureに問題があるわけではなく
    まだまだ人間の認識するobject数に対してまずデータが不十分なことが挙げられます

近年では比較的大規模なデータセットでもobject detectでは600クラス程度であり
まだまだカバーされていないobjectが多いのが現状です
(ここの部分もone shot learning手法も出てくると期待しています)

  • relation detectがうまくいかないケース 大きな原因の一つとして機械学習全般に言えることですが データセットに対して過学習をしてしまっていることが考えられます

例えば、"man"と"horse"のrelationを想像する場合
大体rideであるとそのobject名だけでも想像がついてしまう
しかし実際にはsleep onかもしれないし他のrelationかもしれないわけです
こういった課題にも参考文献[10]あたりが参考になります

課題と未来に起きうること

調べれば調べるほどこんな取り組みがあったのかと思わされるほど
想像より多彩な研究が世界中でされていました

おそらく自分の肌感ではあと2段階
知識・知能の獲得に革新があるとかなり世界は変わると思います
その2段階目とは先程「知識・知能をどう捉えるべきか?」の項で挙げた
ルールを破る、とか簡易な数学などの時間的非視覚概念が理解できる段階です

2段階目を迎えたときその中心にいる企業は
相当なパワーを持っていてもおかしくないはずです
よってそこより上の段階は加速的に発達していくのではないかと想像しています

新しい技術が成功を呼び、新しい世界の時代が来るでしょう
アルゴリズムがすべてを可能にする時代が!

動画概念獲得記事リンク "自動的に知能を高める次世代AIシステム開発:動画機械学習"
https://qiita.com/furukawamassive7/items/fc3b7de6ad092d87cb30

参考文献

[1]"Visual Genome: Connecting Language and Vision Using
Crowdsourced Dense Image Annotations", Ranjay Krishna et al.
[2]"Visual Translation Embedding Network for Visual Relation Detection", Hanwang Zhang et al.
[3]"Image Generation from Scene Graphs", Justin Johnson et al.
[4]"Predicting Visual Features from Text for Image and Video Caption Retrieval"
[5]"FVQA: Fact-based Visual Question Answering", Peng Wang et al.
[6]"Learning a Text-Video Embedding from Incomplete and Heterogeneous Data", Antoine Miech et al.
[7]"VisKE: Visual Knowledge Extraction and Question Answering by Visual Verification of Relation Phrases", Fereshteh Sadeghi et al.
[8]"Visual Relationship Detection with Internal and External Linguistic Knowledge Distillation", Ruichi Yu et al.
[9]"Imagine This! Scripts to Compositions to Videos", Tanmay Gupta et al.
[10]"Weakly-supervised learning of visual relations", Julia Peyre et al.

謝辞

オバタ・ケント氏にディスカッションや一部調査に協力いただきました
ありがとうございました

furukawamassive7
機械学習のエンジニアっす
https://massivelngg.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした