論文読み: Directions Robot: In-the-Wild Experiences and Lessons Learned

[Directions Robot: In-the-Wild Experiences and Lessons Learned](http://research.microsoft.com/en-us/um/people/horvitz/directions_robot.pdf)

## Purpose

一般環境(open world/in the wild)にロボットを置いた際に、人とのインタラクションをどのように行うべきかを明らかにすることを目的としている。一般環境におけるコミュニケーションにおいては、相手が複数人で話者が移り変わったり、また関心を失い去ってしまうこともあるなど、関心や注意は絶えず移ろい不確実であり、ロボットはこうした状況に対応する必要がある。

本論文ではビルの中で道案内するロボットを主題とし、どのようなモデル/実装で話者との関係を築き(Engagement)、対話を行ったのか(Dialog)について述べられている。

## Related Works

大学のキャンパス内での案内や、バーチャルエージェントを使った案内など多々ある(なお、物理ロボットとバーチャルエージェントでは、タスクの成功率にそれほど差異はないらしい([The role of Embodiment and Perspective in Direction-Giving Systems
](http://www.justinecassell.com/publications/HasegawaAAAI2010.pdf)))。そして、ジェスチャーとそれを繰り出すタイミングが非常に重要らしい。

本論文は最終的には道案内よりも広範な、一般環境に配置されたロボット全般に求められる挙動を明らかにすることを目的としており、道案内はその第一歩という位置づけである。


## Architecture

アプリケーション(ロボット)の構成

* NAO: 言わずと知れたアルデバラン社のロボット
 * [PointGrey Flea3](https://www.ptgrey.com/flea3-ieee-1394b-firewire-cameras)(140度広角、解像度2048 x 1080): 画像認識、主にFace trackingに使用
 * Kinect(現在は[Xbox用KinectがそのままWindowsで使えるようになっている](http://www.itmedia.co.jp/news/articles/1504/03/news081.html)): マイクとして使用。音源特定などができるらしい(なぜ画像認識と併用しないのかは謎)
 * マルチコアのデスクトップPC: NAOのコントロールに利用(アプリ化してインストールしていない?)

音声認識については、想定される質問についていくつかのルールを加えたほか、人名・場所名などをビルマップから自動的に起こし、ルールを設定した。これにより、場所を変えてもロボットを運用可能にすることができる。


## Model

### Engagement

対象とコミュニケーションを開始/終了するためのモデル。以下の3つの状態で管理される

* state
 * engage: コミュニケーションを開始している状態
 * not engate: 上記以外の状態
* intention
 * desire to engage: ロボットとコミュニケーションを開始したいと思っている
 * not desire: コミュニケーション開始の意思がない
* action
 * initiate: engage状態になる
 * no-action: 何もしない(initiateしない)
 * maintain: engage状態を維持
 * disengage: engage状態を終了

最初は以下のようなモデルを仮に構築する。なお、actionとintentionは同等とし、例えばactionとしてinitiateであると判断された場合、intentionはdesire to engageとする。

画像から以下の情報を取得し、ロボットと対象の距離、F-formation(複数人がグループを組んでいるような形態。[Spatial organization in social encounters: the F-formation system](https://books.google.co.jp/books?id=7-8zAAAAIAAJ&pg=PA209&lpg=PA209&dq=spatial+organization+in+social+encounters+the+f-formation+system&source=bl&ots=oxn2bSVWJ7&sig=lkexHTMezD4j7_xFprbvyY7x4UE&hl=ja&sa=X&ved=0ahUKEwiQ7Neg_oTKAhVh6aYKHWflD3sQ6AEIJzAB#v=onepage&q=spatial%20organization%20in%20social%20encounters%20the%20f-formation%20system&f=false))の判定を行い、これをinitiate/maintianを表す指標とする。

* 顔が画像の中心にあるか
* 顔の大きさ
* 顔の出現回数

ロボット側は対象のaction(intention)を推定し、その確率が0.8以上であればinitiateの行動を行い(not-engagedの場合のみ。engageして数秒は間を開ける)、engageの中に組み入れる(engageはロボットが相手をする対象全体で、すでに1人がいたらそこに組み入れて2名のグループが対象になる)。逆に、disengageの確率が0.8以上であれば対象から外す。
stateは、対象の状態とロボット側の行動双方が一致した場合にのみ更新される。

ロボット側のaction

* initiate: Hi!という感じの挨拶
* terminate(disengage): dialogの状態によりいくつかバリエーションを持たせる
 * dialogの先頭: 何もしない。間違えてengageしてdialogを開始したシーンを想定。
 * dialogの中間: またね、という感じで終了。(早く終わってしまって驚いてる感を出す)
 * dialogの終了後: Bye-bye!

ロボットが発言する際は、そのタイミングを考慮する(turn talking)。以下の情報から、誰が話しそうかを推定し、話せそうだったら発言を行う。

* 発言時間(音声から)
* 理解度(音声から)
* 誰が話しているか(画像から)


### Dialog

対話は以下のような流れで進行する。

1. 道案内をするか聞く
2. Yesなら、誰/何処を探しているかを聞く
3. 行き方を説明する
 * 説明に加え、最初の方向はジェスチャーで行く方向を指し示す。以後は顔の向き?を使用。
 * 距離がどの程度かについて形容詞を付与(for a bitなど)
 * 相対位置で説明(右手に、など)
 * 適宜説明を省略(短いパスは省略・方向が同じ場合はまとめる・ステップが多くなった場合はまとめるetc)
4. 追加の質問がなければ、続けるかやめるか聞く

なお、音声認識が不十分な場合はある程度Pardon me?などでつなぐが何度も繰り返される場合はあきらめる。
ロボットにはあらかじめビルのマップをインプットしておき、距離が最短になるルートから自動的に説明を生成する。

話しかけられるまで止まっているとよくないので、対象が見つかったら頭/視線で追ったり、誰も見つけられない場合でも適度に動いてLEDを光らせたりする。


## Experiment

エレベーターの近くに、テーブルに置いて配置。そして、ロボット、および実験についての説明をエレベーターの中、廊下に張り出し。
業務時間に合わせて稼働し、朝手動で稼働し、夕方自動的にシャットダウンする。

実験は2週間で実施。

* 1st week: 手動で構築したモデルで実験
* 2nd week: 機械学習モデルを使用

収集したインタラクションの内訳は以下の通り。

* 565
 * 14: 作成者によるテスト?
 * 51: 子供など、認識できない対象
 * 他、エラーの発生したインタラクションを除外

* 57%はグループでの対話
* 道案内と興味関心によるテストが混在し、これに対応する必要あり

### Engagement

1st week

* 249: engaged回数
 * 18%: 誤ってengageを開始(単純に前を通っただけなど)
 * 8%: 誤ってengageを終了

2nd weekでは、機械学習モデルを使用。

* モデルの出力: 画像のフレームに対し、f-formationを取っているか否かを判定
 * Logistic Regression、教師あり学習
 * 学習データは1weekのうち3日分のフレームにアノテーションを行ったデータで、537,000フレーム、写っている対象は計2358人。
 * 特徴量として、顔の場所・大きさ・正面に向いている度合い、またこれらを0.25、0.5、1、2、4、8秒ごとの平均・変化量・標準偏差をとったものを使用。これに加え、人数、フレーム内への滞在時間も使用。
 * 学習後の5-fold cross-validationの誤差は4.9%で、ベースラインの22.2%より大幅に向上した。

* 250: engaged回数
 * 6%: 誤ってengageを開始(1stより大幅にdown)
 * 22%: 誤ってengageを終了(1stより大幅にup...)

誤ってengageを開始するのはあまり気にならないが(Hi、と呼びかけてスルーされる)、誤って打ち切ってしまうのはえっ?という感じになりとても問題。
対象が複数人の場合に発生しやすく(顔の向きを変えて隣の人に話しかけるなど)、terminateの失敗確率は一人の場合が14%なのに対し、二人以上の場合は28%と倍程度になっている。
なお、今回はengageできるはずったのにしていない、という機会損失は加味しきれていない。

## Lessons

### Detection

* 認識精度の向上: より高精度なface tracking。また、bornなど他のセンサー情報の追加。
* グループのマネジメント: 分からなければ「一緒ですか?」と聞いたり、「近くに来てください」「後ろの人はちょっと待っていたください」、など対象をうまくマネジメントする

### Engagement

状態推定について(state)

* コンテキストの考慮: 近接などの画像情報では対象の行動推定に限界があるので(フレームアウトなど)、以下のようなコンテキストを考慮する。
 1. ロボットの状態: ロボットが見ている方向など、対象だけでなくロボットの状態も加味する
 2. 対話の状態: ロボットが話している、相手からの応答を待っているなど、対話の状態を考慮
 3. グループの状態: 隣の人の行動などを考慮に入れる
* 意思の直接推定: action=intentionとすると、actionに影響が大きい画像情報の認識が落ちるとintentionもうまく推定できなくなる。そのため、より広範な特徴量を追加したintentionを直接推定するモデルを作成する。

行動について(action)

* wait or act tradeoff: 特にterminate(engagementの終了)については、相手がいなくなっても対話を続けてしまうか、行動を起こして予期しないタイミングで打ち切ってしまうか、というコストに関するトレードオフがある。これをうまく調整する必要がある
* 積極的行動: 機械学習モデルを利用することで相手のactionがあればこちらから仕掛ける精度は上がった。今後は、ロボット側から呼びかけを行いengageを開始してもよい(Can I help you?的な)。また、ユーザーの緊急度に応じた対応ができるとよい。現在のところロボットは常に最初から対話を開始するので、同グループ内の以前の対話内容を記憶するなどするとより自然んあナビゲーションができ、誤ったterminateを減らすことができる。
* 終了時のバリエーション: 説明の途中で相手が去って行った場合「ちょっとまって！まだ終わってないよ」といったりなどバリエーションを増やす

### Dialog

In-domain

* 235: engage成功
 * 59%: 正常にナビゲーションを完了(154質問中83%は正確に回答)。ただ、音声認識問題は結構大きい
 * 14%: 単純に興味関心から行われる質問も多く、In-domainであってもよく知られている場所をあえて聞いたり、聞くだけ聞いてその方向にいかなかったりと、ロボットを試すような質問があった。これを除いた本当に道を尋ねたと思われる質問の割合は14%ほどだった

Out-domain

* social dimension(社交的質問?): 全体の質問のうち約1/4(22%)は、out-domainな質問を含んでいた。具体的には、「あなたの名前は?」「かわいいね」など。現在はdomainのものしか認識できないのでこれらは"Pardon?"行きになったり、最悪誤解して道案内することになる。
* In-domainだが能力を超える質問: ビルの中以外の場所を聞かれたり、想定外の聞かれ方をするなど(具体的な場所名でなく、ランチを食べる場所はどこ?など抽象化した質問など)。

これらの質問のハンドリングも、自然なコミュニケーションにとって非常に重要となる。

道案内の仕方について

* わかり易さ優先: 距離優先でのナビゲーションよりも、わかり易さ(曲がる回数が少ない、目印があるなど)を重視した方が良い。
* インタラクティブ性の向上: 最初に大まかな道筋を短くいって、相手の要求に応じ細かく説明するなど。これにより、相手が急いでいるか、混乱しているかといった状態を加味した案内も可能になる
* ジェスチャーを交えた説明: ジェスチャーの種類を増やしたり、プリセットのものでなく案内する道筋に応じて自動的に生成するなど


## Next Step

engagement、特に対話の打ち切りの精度向上に取り組みたい。将来的には、engagementをリアルタイムでよりバリエーションのある行動でマネジメントしたい。