norishideのブログ

皮肉が散りばめられた真面目な文章を書きたい

Cognitoysは意外と楽しいという雑感

Cognitoysは Kickstarter発のプロダクトで、5~9歳向けのスマートトイ。IBM Watsonによる音声認識と会話機能が実装されている。wi-fi経由でネットワークに繋げないとただのピカピカ光る恐竜の置き物になる。30分ほど 使ってみたが、それなりに楽しく遊べた。

 

まず最初に、コンテンツの充実性、音声コマンドによるコントロール、返し方の3つに注目して使った感じを。

基本的な機能は公式webに書いてある通りだが、ジョーク、お 話、ゲーム、QA形式の雑談(i.e. chit chat)が主たる会話の機能となっており、他にも音楽を流したりできる。ジョーク、お話、ゲームのコンテンツはまだ限定的だが徐々に拡張されている。ロ ジック的に当たり前だけど、話を遮ることはできない。ジョークやクイズゲームなどの短いコンテンツならいいが、長めのお話が開始されるとそれが終わるまで 聞き続けなければならない。途中で「I want to quit」など何を言っても終了できない。特定のポイントに来ると「Do you want to continue?」と言った意味の質問をしてくるので、ここでユーザー入力のyes/no(ネガ/ポジ)判定を行う。

Dino Commandと 呼ばれる音声コマンドで特定の機能を動作できる。 例えば、「Say xxx」と入力すればDino(恐竜の名前)は「xxx」と返答する。「Say "I hate Donald Trump"」 と入力すれば Dinoに 「I hate Donald Trump」と言わせることもできる。(ひとり爆笑してしまった...)他の例では「Repeat」や「I didin't get that」で前言ったことを繰り返し言わせることができる。音声インターフェースを作るならこの聞き返し機能は必須だと思う。これらの動作を特定のキー ワードでトリガーできるのは有効な手段だ。音声認識について良いアイデアだと思ったのは、胴体のボタンを押している時だけ音声入力を受付るという点だ。こ れは電源がONにされている間ずっと音声待受け状態を維持するよりもはるかに良い。なぜなら、音声待ち受け時間を短くすることでAPI呼び出しのコストが 下がるし、余計なノイズを拾って認識できないケースを除外できる。さらにこの時口元のLEDの色が変わるので、ユーザーは明確にDinoが話を聞いている 状態と喋っている状態を区別できる。

悪意のある入力に対する反応を試してみた。fワードや極端にネ ガティブな発言に対しては「そんなこと言っちゃいけないよ」という意味の反応を返される。入力が、悪い発音、言い直す、そもそも日本語、などで判別できな いような時は「I didn't get/hear that, Say it again」とか、「何か別のことを話そう」という反応になる。言い回しやパターンがいくつかあるのでそんなにストレスを感じない。そもそも「これは答え られないだろ」というい前程で話しかけているのだけれど。返答にかかる時間はだいたい2〜3秒で、意外とストレスを感じない。

 

アマゾンのレビューでは評価が分かれている。とても楽しいおもちゃだと評する5つ星のレビューと、1つ星が同じくらいあり、中間が少ない。低評価のレビューのうち、「子供の興味を学習するとあるが私の子供の興味を学んでいるようには思えない」という指摘はもっともだ。なぜなら、このページを 見ればわかるようにコンテンツを決めているのは製品企画側だから。一般的に、「人工知能(もといWatson)があなたの会話を学習してそれに合わせて製 品をアップグレードします」という神話が流布さているが、実際にあなたの会話を学習するのは超高性能の天然知能、すなわち会話ログを見てあれこれ考えてい る製品企画側の人間だ。とはいえ、今までは「おもちゃにユーザーがどんなことを話しかけるか」という記録を入手できる手段はほぼなく、超リアルなユーザー の声が直接コンテンツメイカーに届く仕組みというだけでも十分に画期的だとも言える。

 

気になる値段だが、なんと$99.99。一方シャープのロボホ ンは21万円*1。Cognitoysはこの値段でどうやって利益を出しているんだろう。Watson APIのConversation,STT,TTSを使っていると仮定すれば、安く見積もっても$10/monthくらいかかってしまうはず*2。子供 は成長が早いから9ヶ月もしたら飽きる前程で作られているんだろうって?いや、それじゃあ、「恐竜のDinoはあなたの子供と一緒に成長します」っていう 製品の大事なウリが嘘になる。次に予想できることといえば、実際にはAPIを使っているわけではないということだ。Watson APIのオファリングが始まる前に開かれたIBMのコンテストか何かで優勝したstart-upなので、IBMが特別な形で技術提供をしているのかもしれ ない。

 

*1:携帯電話として の機能と、可愛らしい動作を実現するため のモーションシステムが値段を釣り上げていることは確かだけど、それだけでここまで高くなるものなのか。ハイエンド層を狙った実験的な値段設定と思われる けれど、市場へ大きく広めたいならばこの値段設定は適切ではないように思える。

*2:API公式ドキュメントに値段が書いてある。一日に数分遊ぶと仮定する

Kaggleでコンペを開くには

Kaggleは、データサイエンティストのアウトソーシグプラットフォームだ。企業は多くのデータを抱えており、それらを分析することで新たな洞察を得たりビジネス上の課題を解決したいと思っているが、高度なデータ分析スキルを持った人材がいない。数十万人が登録するこのプラットフォーム上で企業は賞金付きのコンペを開くことで、自社の抱えるデータを良い精度で分析してもらうことができる。その中の回答や数理モデルからコンペ成績の良いものを採用したり、それらを作った優秀な人材をリクルートすることができる。日本語でより詳しい説明を所望の方はこれとかこの記事がわかりやすい。

 

Kaggleは、大体においては、参加者となっていかに良い成績を残して高い賞金*1を得るかという文脈で語られる。なのでここでは企業側の視点から考える。これまでにKaggleでコンペを開いた企業・組織はAmazonFacebookWalmart、GE、MicrosoftFacebook、Ford、NASAairbnb、Merckなど、欧米の大企業、著名なスタートアップ、学術機関などが名を連ねる。コンペを開くためにはまずガイドを読んで、Kaggleに申し込めばいい。画一的な料金があるわけではなく、どんな問題を設定するかなどをスタッフと詰めてコンペを開く。7年で238件のコンペが開催されていて、スタッフは現在20〜30人程度らしい。思ったよりKaggle自体の規模は大きくない。

組織がデータを預けるということがどうして可能なんだろうか。セキュリティに関してはきちんとしたガイドラインの上で交渉を行うようだ。参加者の賞金は大体数百万から一千万だけれど、これだけの投資をするのはなぜだろう。そんなにも良いリターンがあるのだろうか。いくつかのは賞金の代わりにJobを提供するコンペもやっていて、クラウドソーシングというよりは優秀な人材を囲い込みたいからかもしれない。

 

コンペ一覧をざっと見た限りでは、日本の組織を見つけることはできなかった。そもそも日本で全く知名度がない*2。日本でこのようなプラットフォームを実現しようとしているDeep Analyticsというのがあるが、賞金はKaggleに比べると低く規模も小さい。

データが増えることはあっても減ることはないだろうし、解析技術も進歩していくので、このようなプラットフォームやビジネスモデルは今後規模を拡大していくと予想される。その時、日本の企業や組織が(Kaggleのコンペホストたちと同程度には)、データ分析のスキームや結果を正当に評価したり、まっとうな賞金を用意するだろうか。もしそれを実現しようと思ったら、結構骨が折れそうだ。少なくともあと5年はかかるか、でなければ決して訪れないかもしれない。

*1:数百万〜一千万円だけど、賞金少なくねえ?的な議論もある

*2:ジャパンパッシングかもしれない。ジャパンパッシングという言葉の意味はよく知らないけど、世界が日本を無視しているのではなく日本が世界を無視しているようにしか見えない。完全に主観だけど、アメリカ発祥の先端的な技術とか文化とか思想が他先進国がほぼリアルタイムなのに対して大体5−10年遅れで日本に入ってくるように感じることが多い。どなたか良い本があれば教えてください。

チャットボットは次のプラットフォームになりうるか

チャットボットがスマートフォンアプリの次のプラットフォームなるかもしれないので、その覇権を巡って苛烈な競争が起こり始めているという記事を読んで驚いた。けどAlexaがスマホの次のプラットフォームとなる可能性を考慮すれば、ユーザーは画面上のアイコンをタップして必要な情報を探す代わりに、自然言語をやり取りして必要な処理を行うことは容易に想像できるため、チャットボットが次のプラットフォームになるのはとても自然な流れのように思える。

チャットボットについて色々調べてみたけど、日本語ではよくまとまっているこれを読めばざっくりわかります。良いです。大体が2016年に書かれた記事で、なるほどUSの先進的なチャットボットサービスの事例がお固い感じの文章にまとめられるくらいに日本にそれらが認知され始めたという感じ。

 

IBM Watsonが提供しているConversation APIを使えば誰でも簡単に、文字通りコード書かずにチャットボットを作成できる。チャットボットという言うよりは、その中身の会話フローを設計できると言った方が正しい。それをアプリとして人々に使ってもらえる形にするには、JavaScriptなどのフロントエンドを正しく書く必要がある。これをこの数ヶ月触ってみて思うのは、会話のシナリオ設計がアプリでいう画面遷移と同じくらい重要なユーザーの満足度を左右する指標になるということだ。ボットにどんな発言をさせるのか、ユーザーからどんな回答を期待して待ち受けるのか、それらから逸脱した発言をした場合にどうハンドルするのか... それを決めるためには、何を目的としてこのチャットボットを設計するのか、ボットはそもそもどんなキャラクターなのかを整理した上で、ボットに発言させる内容を考える必要がある。ユーザーの発言の意図がわからない場合に、単に「わからない」と伝えるのかユーモアを含めてはぐらかすのかによってユーザーの満足度が変わる。 

チャットボットという性質上ユーザーは絶対に雑談をしたがる。けれどチャットボットを実装する上でもっとも簡単なif-thenのロジックでは雑談を形成することは不可能に近いほど難しい。そこでりんなドコモのAPIのような雑談に対応可能なエンジンが重要になってくる。DBから適切な回答を引っ張ってきてランク付けする機能、文章を生成する機能で雑談を実現している。今後この仕組みについてもう少し深い所を学んでいきたい。

 

チャットボットを作っていると、それって本当にチャットボットで提供する必要があるの?グーグルで調べれば出てくるじゃん。という疑問に駆られる。おそらく、そういった疑問を持てるのはITリテラシーの高い人だけで、ほとんどのユーザーは自然言語で問い合わせた時に適切な答えが返ってくることを好む。いや、多分、ITリテラシーが高い人だってみんな望んでいる。自分で調べるよりは、誰か隣にいる人に話しかけて良い答えや手がかりを得られることを。チャットアプリが他の種類のアプリに比べて高いリテンションレートを持つという事実は、チャットボットが次の時代の主要なUIになる可能性が決して低くないことを示している。

人間は、人間の口から語られる情報にどの程度影響を受けるのだろう。それらは文章や映像といったメディアと比べてどう違うのだろう。口コミが最も効果的なプロモーション(多分)であることを考えるとその影響力は他のメディアよりも高いように思える。詐欺師がこの世からいなくらないのもやはりこのことに関係がある気がする。

対話する機械

対話する機械について。人と話すロボットは色んな物語に登場してくるので、これはほとんどの人にとって別に驚きはしない概念だけど、人間が機械に対して人格みたいなものを見出し始めたのはいつのことなんだろう。今日に生きる我々は、その形からは生き物らしさを微塵も見出せないディスプレイに向かって何かをつぶやいている。主に、プログラムが動かない時とか、うまくいかない時とか。むにゃむにゃ。

人と話すロボットと言われて思いつくものはなんだろう。アトム、ドラえもんC3POR2D2、ハロ、HAL3000くらいかな。SFオタクではないからこれ以上思いつくことは難しい。現実世界にこんな愛嬌溢れる、人間を楽しませることのできるロボットがいたらいいですよね。そう思いませんか。

2017年現在、対話する機械はスマホやPCで動くアプリと特定の形のモノが結びついた製品に分けられる。前者ではSiriCortana、女子高生キャラクターのりんなが有名だし、後者ではpepperロボホンAlexaCogniToysなどがあったりする。人の言葉を話すわけではないけど、AIBOはとても有名だ。palroBOCCOOHaNASなんていうのも最近出てきている。botもRobotもたくさんの製品があるけれど、空想世界に出てくるように自由自在に人間とコミュニケーションをするエージェントはまだ存在しない。人間が気を使わなければ、機械と会話を成り立たせられない。課題が沢山ある。とはいえ、一定の範囲の中ではそれなりに対話ができるといった感じ。

 

・・・

対話の仕組みを作っているソフトがあるのだから、スマホかラップトップで対話する機械を作ってしまえばいいのに、なんでわざわざ他の物体を用意する必要があるんだろう。これはIoTの本質を表しているように思える。ハードの見た目、仕草、佇まいと言った「汎用的ではない」モノのデザインこそが、対話において人間の満足度を高めるんだと思う。pepperやロボホンは人型であるのに対し、Alexaはただの円筒だ。この違いはユーザーにどんな体験の違いをもたらすんだろうか。

 

・・・

1967年のSF好きにこんなことを言ったらどんな反応をするだろう。「2017年の対話する機械に脳みそはなく、代わりに雲の中に置いてある脳から逐一通信行って指令を出してその機械を動かすんだ」と。ドラえもん鉄腕アトムがそんな風に動いているとしたらなんか気持ち悪いって感じる。もしドラえもんが車に轢かれて大破したとしても、そこで物語は終わらない。のび太が家に帰る頃には新しいドラえもんが引き出しから出てきて「いやあ轢かれちゃった」とかなんとか言ってるなんて…。でも現在のクラウドの技術を考えるとそんなことは結構な確率でありえそうだ。

CogniToysは子供向けの対話型おもちゃだが、その会話エンジンにはクラウドコンピューティングを使っている。開発者によれば、このエンジンを全て一つのハードウェアに実装しようとしたらとてもコストが高くなってしまうそうだ。確かにSiriは常にアップデートされているが故に素晴らしい。いろんな用途・選択肢はあるにしろ、人形に高度な会話をさせたいなら、一つ一つのハードに会話エンジンを内装する(定期的なアップデートがあるとしても)のは得策でないように思える。ソフトウェアをクラウドから使うか、定期的にアップデートするか、組み込みにするのか。技術的にとても興味深い問題だ。

大学を離れてから気づく大学の利点

ブログを30日間とりあえず書き続けるという30日チャレンジは続きませんでした。前回の記事でちょっと頑張りすぎた感じはあります。しかし出来る範囲で続けます。

 

IT系のスキルを自学していて、Javaは2ヶ月やってみて大体読み書きできるようになってきた。ファイルの取り扱いもまあ初歩的なところは作れて、あと触れてないのはラムダ式くらい。これに加えて、機械学習の勉強をしている。教師あり学習、教師なし学習から始まって分類問題、再帰問題など初歩のところから、ニューラルネットワークの原理、計算方法の理解、CNNの概念とディープラーニングの可能性までなんとなーく全体像をつかめた感がある。私という天然知能の教師データは主にこの本。なんとAmazonランキング1位で大人気、こないだカフェでこれを読み始めたら隣の人も同じものを読んでいた、という、まるで村上春樹の新書で起こりそうな狂った体験ができました[1]。

 

自分で本を読んだりしていたが、勉強のための勉強になってしまって、何かアウトプットのために学ぶよりもやはり効率が悪いと感じる。知識そのものが増えるのは楽しいから娯楽と言ってしまえばそれまでで、その場合別にアウトプットなんていらない(学問なんて娯楽だ)。けれども欲張りなので何か成果が欲しいなと思い、友人と勉強会的なものをしようと断続的に集まったりしてみたものの、上手くいかない。各個人のレベルややりたい方向性に隔たりがあり、結局ふわっとした議論だけして終わってしまう。「効率的な」自学自習は思っていたよりも難しい。

 

専門書を読んでいると、大事なポイントを要点抑えて学べたら効率良いなと常々感じる。それを正しく行えるのが大学の授業の良いところなんだと気づいた。体系だった知識を持っている人がガイドしながら、細部までは行かずとも体系全体の中で大事なポイントを定期テストの問題にする。だからたとえ一夜漬けでも一応は大事なポイントを理解して試験にパスしていれば、そこにはやはり形式上の単位や学歴以上の価値がある。授業を退屈だと思って聞いていたのは、実は聞き手が退屈だと思えるくらいに体系だったわかりやすいカリキュラムを作っている人がいたからだ。たまに学生を置いてけぼりにする意味不明な講義をする教授もいたけど。そしてそのカリキュラムを作る人は、その分野では全人類のうち最も詳しいレベルの知識を持っている人なのだ。

本を読めば学はつく。しかしそれは正しく読めた場合のみだ。間違った理解したことを誰も指摘してくれなかったなら、それは悲しいことだ。一度、物理学を間違って理解している人の(そのおっさんは高校物理だって理解できているか怪しい)意味不明なウェブサイトを見かけたことがある。彼は物理学が好きで本を読んで持論を書いているのだろうが、本を正しく読めていないのだ。一度どこかの大学のオンラインの講座でも受けると良いと思う。

有名大学の授業はいまや大体オンラインで受講できるようになっている。だから大学の存在価値はもはや無いのでは?という議論があり、これに対する有力な回答は、切磋琢磨できる仲間を見つける場であるということになっている。まあそれもあるけれど、ここで言いたい大事なことは、大学では、授業を作る人、教える人が(少なくとも知識の上では)「きちんとしている」ということだ。

 

 

[1] 村上春樹は好きですがそういう体験をしたことはないです。そういえば騎士団長殺しというキャッチーなタイトルの新作が出るみたいですね。

[*] 中学程度の学力しかない人たちに根気強く、大学程度の工学を教えてくれた高専の先生方は素晴らしいと思う。高専生だった時は全くこんなことをやって何の役に立つんだという思いしかなかった。けど深く科学・技術を学ぶにつれ、微積分やフーリエ変換運動方程式C言語のprintf文を10代の時に学べるという環境がどれだけ特殊で素晴らしい機会だったかということを年々強く感じるようになってきている。Javaを本格的に勉強し始めた最近、10年前の高1の時にプログラミングを教えてくれた超個性的な(普通高校には絶対いないような)先生の授業がフラッシュバックする。見るからに運動は不得意そうで、なぜかいつも汗っかきでヒューヒューと息をしていて、要するに冴えないオタクだった。(どうでもいい情報だけど、その先生はint型の変数名には律儀に”seisu_”という接頭辞をつけていたし、演習の技術補佐員は超アナログなおじいちゃんで何かエラーが出るとコマンドプロンプトを見ることなく「再起動したら?」と学生にアドバイスしていた)当時プログラミングがいかにクールなものかなんて知る由もなかった愚かな僕は「意味わかんねーしオタクだせー」と内心見下しながら授業を受けていた。タイムマシンがあったら昔の自分を殴っている。でもとりあえず、10年経っても鮮明に覚えているくらいそれまでの義務教育とは一線を画した授業だった。いわゆる「高専ぽっさ」が前面に出ていたこともあるだろう。いやあほんと、授業って、奥が深いですね

文章を要約する人工知能についての話

30日チャレンジなのにブログ更新が1日空いてしまったけど、昨日は仕事の文章を書いていたのでよしとします。自然言語処理を用いて自動で文章を要約することに関心を持ったので軽く調べたことを書きますね。

(時間制限のアウトプット付きのインプットは効率がいいと思う。帰ってきて適当にfacebookを眺めるよりはずっといい。でも調べるの含めて90分かかった...)

 

なぜ興味を持ったか

先日、友人と「情報のリフォーマット」という観点で色々とアイデアを話し合っていた時に話題になり、調べてみようとなった。これには、Acrossという「論文をスマホから読みやすくしよう」というサービスを作るサイドプロジェクトが背景にある。これはまた今度説明。個人的には、論文を読み込んで新規の研究テーマを自動で見つけたりできたら面白いと思う。

 

文章要約は精度の高いエンジンが開発されつつある

何を持って要約とするのかという疑問があったけど、無料公開のツールはすでに多くあり、2000文字の文章は3-5文で要約できてしまうし、なんとなく全体像がつかめてしまう。ライブドアニュースや47 ニュースという実用例もある。実は自動アルゴリズムだったらしい。細かいアルゴリズムはわからないけど、形態素分解をして文章や単語ごとの重要度をランク付けしていくのだろうか。ウィキペディアによると、単に「タイトルと同じ単語が含まれる」などのルールを設定して本文を抽出するだけものもあるが、最近では流行りのディープラーニングを使って精度を上げることに成功したと報告する論文もあり、メディアによると人の要約と大差ないとか。この論文の著者は自然言語処理が得意なIBM Watsonの研究者とモントリール大学の研究者なんだけど、なんでも数年前の文章要約コンテストで他を圧倒した性能で優勝したのがモントリオール大学のチームだったそう。リクルートテックが公開しているpythonコードの実装と、この論文を読み込んでみたい。

文章要約の応用先

例の友達と話していたことだけど、論文、ニュース、メールなど自分の関心のある文章を要約して構造化し、それらを音声で流す自分専用のラジオなんかがあるといいよね。朝メールを聞きながら出勤し、デスクに着くとともに効率的に対応できるとか。(せかせかしすぎ?)

今日みたいに、夜遅く帰宅したけど文章要約について調べたいなと思いながら晩御飯を用意している時に音声で教えてくれたら便利だと思う。いやでも、そもそもグーグルで検索して上位5件をざっと読むのも面倒だから、それらを3点にまとめて「ようはざっくりこういうことだよ」と情報を表示してくれたらとても素敵じゃない?それって、まるで何でも知っている賢人が常にそばにいて何でもわかりやすく教えてくれるみたいだ。グーグルは検索エンジンの高度化を進める傍ら、世界中の情報を整理するための、検索エンジンの次を作っているんじゃないか。それが進んでいくと、いつかはのび太にとってのドラえもんみたいな都合の良い教師があまねく行き渡るのかもしれない(ドラえもんは必ずしも正しい知識をのび太に与えているわけじゃないから違うかも。人の言葉を話せるR2D2って感じかな)。

論文自動読み込みで研究テーマを見つけるというアイデアに関しては、「この研究分野においてまだはっきりとわかっていない部分はもしかしてこれじゃない?」と候補を提案するような形ができれば現実的で面白いかなと思う。地図の空白部分を見つけるのに似ている。どの問題を解くかを見極めるのは研究者がすることで、その補助ツールという立ち位置。これは臨床現場でのAIの応用と同じ構造。

理工系の大学院に進学する後輩から奨学金について聞かれたのでその回答

ブログに何を書くか悩み続けて全く手がつかなかったですが、どんなものでもいいからとりあえず書いてみようと思ったので30分チャレンジをします。

 

理工系の大学院に進学する後輩から、奨学金について聞かれたのでその回答をこちらに書いてみようと思いました。僕の場合こうしたよという感じです。
 

方法

・学生支援課にある全ての奨学金情報を入手して、応募資格のあるものすべてに出願しました。
・こちらのpdfリストから応募資格のありそうなものを全て申し込みました。情報のアップデートがあるかもしれないのでそれらはこちらからチェックしておくと良いと思います。
奨学金の申し込み期限は殆どが4月以降ですが、ものによっては早いものもあるので、昨年度の募集要項を読んでおくと良いでしょう。

 

種類
1)自由応募型の奨学金これは僕が給付を受けていた財団も含まれます。学生支援課や自分で調べると良いと思います。
2)学校推薦型の奨学金これは各大学ごとに定員が決まっているタイプです。年度ごとに学部や学年の条件が決まるようです。
上記両方からいただけることになりましたが、同時給付は不可能なので、額の高い方をいただくことにしました(月12万円x2年間)。小額のものは同時給付が可能なこともあり、それらを複数もらう方法もあります。


その他
博士課程への進学を前提にした支援制度もあります。学振や、大学独自のプログラムが多いようです。学振は月に20万円もらえます。博士課程へもし仮に進学をしないとしても、修士の間プログラムからお金がもらえる可能性があるのか一度詳細に調べておくことをお勧めします。
理工系院生でコードが書けたり回路が設計できたりと専門的なスキルがあると、場所によっては良い時給でインターンやアルバイトを見つけることもできます。これで奨学金の10万円分などを稼ぐには難しいでしょうが、自身の職務経験にもなりお金ももらえて技術スキルものつくので、研究の合間にもしできれば良い経験になるかと思います。