目次


コグニティブ・アプリを作成するときに知っていなければならない 5 つのこと

Comments

人工知能 (AI) の分野は、ハイプサイクルや AI の冬というだけでは表現しきれないほどの大きな浮き沈みを経てきました。けれども、いくつもの技術的進歩により、ついに AI アプリケーションが開発者の手に届くようになっています。高速インターネット接続、コグニティブ・アルゴリズムを公開する API、そして深層学習などといった新しい手法により、AI の用途に新たな可能性が広がっています。もちろん、新たな可能性には新たな課題が伴うものです。ときには、新たな課題がそもそも AI を利用して解決するはずの問題と同じほどに難しいものであることさえあります。これらは単に技術的な課題というだけではありません。コグニティブ・アルゴリズムの可能な動作と、これらのアルゴリズムによって明らかにできること、できないことについて方針を立てなければ対処できない課題なのです。

クライアント・サイドの問題とサーバー・サイドの問題

AI に関してまず知っておかなければならないことは、純粋にそのアーキテクチャーです。例えば、ユーザーの現在地に基づいて、おすすめのレストランを提示するモバイル・アプリを開発しているとします。このようなアプリでは、クライアント・モバイル・アプリとサーバー・サイドの間で機能を分けるのが自然な役割分担となります。

クライアント・サイドの計算能力はわずか数ギガフロップスであり、これだけの計算能力を使用すれば、瞬く間にバッテリー電源を使い果たしてしまいます。一方、(クラスターに依存する) サーバー・サイドには、テラフロップス単位の十分な計算能力があるだけでなく、もちろん電力消費量が懸念事項になることはありません。ストレージ容量についても同様に、モバイル・デバイスではギガバイト単位で測定される一方、クラスターでは数百ペタバイトを超えることもあります。このことから、モバイル・デバイスはユーザーの場所を特定してユーザーとやりとりするには申し分ありませんが、デバイス上で独立して稼働するアプリケーションを作成するのは理想的でないことは明白です。

このレストラン・アプリには、サーバー・サイドで世界中のレストラン、メニュー、レビューのリストと、ユーザーの履歴および好き嫌いに関する情報を維持するというアーキテクチャーのほうが適切です。その場合、コンテンツ・ベースのフィルタリング (興味の対象およびユーザーの嗜好を考慮する、レコメンデーション・システムの手法) を使用すれば、サーバー・サイドでユーザーの現在地とこれまでの食の嗜好に基づいて、近くにあるいくつかのおすすめレストランを特定できます。

このアプリは、アーキテクチャー上の機能に基づく、明白な関心の分離の例です (ただし、達成したい目標と許容できるトレードオフによっては、その境界線が曖昧になることもあります)。一方、ユーザーのデータと嗜好をクラウド内で保管する場合に固有の課題もあります。次は、それらの課題を取り上げます。

データとプライバシー

ユーザーのデータを保管する際は、そのデータによって該当ユーザーが一意に識別されないとしても、対処しなければならない固有の問題が伴います。これらの問題には、データを暗号化してサイバー・アタックによる情報の漏洩を防ぐだけでは対処しきれません。

2012 年、ターゲットの顧客が、無香料のローション、ミネラル・サプリメント、コットンを買いました (このリンク先の記事「How Companies Learn Your Secrets」を参照)。ターゲットの統計モデルにより、この購買行動が一般的に妊娠中の女性に結びつけられるものであることが正しく推測されました。ターゲットは販売を促進する方法として、その女性にベビー用品のクーポンを送信し始めました。このレコメンデーションは的を射たものでしたが、対象の顧客は実は十代の少女だったのです、それらのクーポンは最終的に、少女が妊娠していることを知らない父親の手に渡ってしましました。

不注意な情報公開としては、Netflix の例もあります。2006 年、Netflix は 480,000 人のユーザーから集めた映画レビューを、ユーザー ID (整数値)、映画、レビューの日付、格付けという形の匿名化したデータ・セットとしてリリースしました。その翌年の 2007 年、テキサス大学の 2 人の研究者が映画のレビュー (および一般公開されている Internet Movie Database) を基に、このデータから個々のユーザーを特定できると発表しました。この調査結果は、2009 年にセキュリティー違反に関する集団訴訟へと発展し、翌 2010 年、Netflix はこの集団訴訟を和解で解決する結果となりました。

その反面、ユーザーの好みや検索に関するデータを維持すればビジネスに利益をもたらします。けれどもこの情報は犯罪者にとっても有益なものとなります。ある女性の息子が車内に置き去りにされ、熱中症で死亡するという事件がありましたが、2016 年、この女性が「駐車中の車内の温度はどれだけ上がるか」についてインターネットを検索していたことが発覚しました。さらに疑わしいことに、「車内の子供が熱中症により死亡に至る温度」についても検索していたのです。別の事件として、2011 年、娘を亡くした母親のコンピューターを調べたところ、娘が亡くなる直前に、誰かが「クロロホルム」を検索していたことがわかりました。その娘の遺体からは、高レベルのクロロホルムが検出されていました (このリンク先の記事「Day by day: Key moments from the Justin Ross Harris trial」と「How your Google searches can be used against you in court」を参照)。

最近では、Amazon が販売する Amazon Alexa という音声操作式インテリジェント・アシスタントが関係している事例もあります。Alexa は常にウェイク・ワードを listen していることから、検察官たちはそこに殺人の証拠が残されている可能性があると確信し、このデバイスのログを要求しているところです (今のところ、Amazon はこの要求を拒否しています)。別の家庭用スマート・デバイス (温水器) も、殺人事件が発生した頃に大量の水が使われたことを示すはずだとして、殺人の隠ぺい工作の証拠になると主張されています。

このように、プライバシーは守られるものだと期待していても、インターネット上でプライバシーが守られていることを前提にすることはできません。また、ユーザー・データのストレージと保存が、地方または国の法律や、国際法による取り締まりの対象となっている場合もあります。

データの速度、品質、腐朽

アプリケーションに協調フィルタリングや深層学習などの手法が関与するかどうかに関わらず、コグニティブ・アルゴリズムの動力源となるのはデータです。さらに重要なことに、すべてのデータがそうであるというわけではありませんが、データはその日には関連性があったとしても、翌日には使い物にならない場合があります。

一例として不正検出アプリケーションの開発を取り上げると、このアプリケーションで鍵となるのは、正しい決定に辿り着くまでの速度です。不正が行われた後にその不正を行ったトランザクションを識別したとしても、何の役にも立ちません。そのデータはあってもなくても同じでしょう。一部のアプリケーションでは、速度がアーキテクチャーの基本的な理念として、リアルタイム分析に関するさまざまな懸念事項を左右します。

履歴データが全面的に関連することもありますが、通常は、最新のデータに比べると履歴データの関連性は低くなります。一例として、ユーザーが興味を持ちそうなことを予測するレコメンデーション・システムがあるとします。このコンテキストでは履歴データが役立つはずですが、ユーザーの嗜好が変わっていくとしたら、その有用性は次第に薄れていきます。したがって、コグニティブ・アプリケーションで重要となるのは、データをどれだけ迅速に意思決定に適用できるか、そして長期的にデータをフィルタリングして正確にユーザーをモデル化できるかどうかです。

さらに正確なモデルを構築する上で最も重要となるのは、データの品質です。画像を分類する深層学習モデルでは、敵対的画像 (adversarial image) と呼ばれるデータを使用します。敵対的画像とは、悪意のあるユーザーが深層学習アルゴリズムを欺いて、正しく分類されるはずの既知の画像を誤って分類させるために使用するデータを指します。深層学習の研究者たちは、このような画像をセキュリティー脅威と見なしています。それは、誤分類が、悲劇的な結果をもたらす可能性があるためです。その可能性を理解するための例として、深層学習を自動走行車のコンテキストで考えてください。実験では、深層学習を使用した自動走行車に敵対的画像を提示して混乱させると、道路標識がそうではないオブジェクトとして誤って分類されることが明らかになっています (このリンク先の論文「Universal adversarial perturbations」を参照)。

ユーザーの観点からは、予測とレコメンデーションというコンテキストでのアルゴリズムへの信頼度は、アルゴリズムがそのソリューションに至った理由を説明できる場合に最も高くなります。レコメンデーション・システムでは、例えば製品を推薦する理由 (ユーザーが関連製品を購入または表示したといった理由) を説明すると、ユーザーの信頼度が高まります。

ライブラリーとフレームワーク

コグニティブ・アプリケーションを開発する際に、すでに存在するものを始めから再開発することはしたくないはずです。幸い、コグニティブ分野でのオープンソースの選択肢は幅も奥行もあります。

開発するコグニティブ・アプリケーションが大量のデータを扱うものである場合、Apache Hadoop や Apache Spark などのビッグデータ・フレームワークでは、大量のデータ・セットに対処できるだけでなく、データの意味を理解するための機会学習アルゴリズムも提供されています。Hadoop や Spark を使用した大規模な機械学習でとりわけよく使われているフレームワークの 1 つとしては、Apache Mahout プロジェクトが挙げられます。Apache Mahout フレームワークには、アイテム・ベースの協調フィルタリング、ナイーブ・ベイズ、隠れマルコフ・モデル、そして複数のクラスタリング・アルゴリズムと次元削減アルゴリズムなど、各種の機械学習アルゴリズムが組み込まれています。少し前には、Samsara プラットフォームも Mahout に追加されました。Samsara プラットフォームは、大規模データ処理に R 言語のような構文を適用するベクトル演算実験環境を提供します。

高速のインメモリー・コンピューティングをサポートする Spark 環境にも、MLlib という機械学習ライブラリーが用意されています。このライブラリーには多数の機械学習アルゴリズムが含まれているだけでなく、機械学習パイプラインを構築するためのワークフロー・ユーティリティーも備わっています。

コグニティブ・アプリケーションで大規模なデータ処理を行う必要がある場合は、小さく分割したデータ・セットに機械学習アルゴリズムを適用できるライブラリーやツールキットもあります。そのようなライブラリーのうち、よく使われているのは、Python 用の scikit-learn です。このツール・セットは NumPy と SciPy をベースに作成されていて、Python 環境内で簡単にデータ・セットに適用できる複数の機械学習アルゴリズムを実装しています。

機械学習アルゴリズムをデータ・セットに適用するために一般化されたプラットフォームとは別に、特定の機械学習アプリケーションを対象に特化された環境もあります。その一例は、都市型自律走行に対応する Autoware というオープンソース・プラットフォームです。このソフトウェアは、走行車線、信号、車、歩行者やその他のオブジェクトを自動的に検出し、加速、ブレーキ、ステアリングを制御します。Ubuntu (Linux) ディストリビューション用に開発された Autoware は、Berkeley Software Distribution ライセンスを使用しています。

2015 年、Google はそのオープンソース機械学習システムを TensorFlow という名前の深層学習フレームワークとしてリリースしました。TensorFlow は、テンソルと呼ばれる多次元配列を、ステートフルなデータ・フロー・グラフによって表現された計算を通じて処理します。このフレームワークは、単一のデバイス上で動作することも、CPU と GPU からなるクラスター上で動作することもできます。重要な深層学習フレームワークとしては、Torch、Theano、Apache Singa も挙げられます。

最後に、IBM Watson では、言語、音声、視覚、データ分析に広範に使用できる幅広い深層学習ベースのサービスと API を提供しています。その数はここで正当に評価するには多すぎるので、このリンク先の Watson Developer Cloud で詳細を調べてください。このサイトから、Node、Java、Python、iOS、および Unity 対応のオープンソース Watson SDK にもアクセスできます。Watson サービスは IBM Bluemix クラウド上で利用できます。

このように、大規模なデータ処理を目的としている場合でも、単一のコンピューティング・システム内でデータを処理する予定の場合でも、オープンソースだけで、ほとんどの機械学習アルゴリズムの実装に対応できます。さらにオープンソースの中には、ドメイン固有のアプリケーションを実装する特化されたパッケージもあります。

融合、アンサンブル、そしてデータの将来

データの収集手段が多岐にわたるようになるにつれ、データの意味を理解するためのコグニティブ・コンピューティングへの移行が促進されていきます。ビッグデータ・フレームワークは大規模なスケールでデータを保管して処理する手段になりますが、この分散されたデータを、効果的な意思決定を行うために使える、意味のあるものに集約できるのは、アルゴリズムです。

私たちの理解力を上回るほどの大量のデータが溢れているドメインとしては、モノのインターネット (IoT) が挙げられます。IoT は、今はまだ存在していない新しい形のセキュリティーによって、データの収集および分散管理に対応する新しいアーキテクチャーを推進することになるはずです。

データの収集、処理、機械学習における関心領域には、自己定量化 (Quantified Self) と呼ばれる領域もあります。自己定量化は、データ収集を個人の生活に採り入れて、自己認識を可能にし、個人の情報を使用可能にするというムーブメントです。生活の中でデータを収集する場合、(心拍数、睡眠の質などのデータを追跡する) フィットネス・トラッカーや、GitHub コミットなどのオンライン・ソースを含め、多数のソースからのデータを融合できます。これらのソースからのデータを使用して、運動および睡眠と、労働生産量との間の相関関係を見つけることも可能です。生産性や労働生産量などの変数に作用する要因を識別するには、決定木による帰納学習が理想的な機械学習手法となります。このようなデータを多数のユーザーから集約すれば、興味深い特性が浮かび上がってくることは確かです。データ・ソースの融合は、集団に関する新しい洞察を得るために必須となってくることでしょう。

一方、データ・ソース融合の先には、アンサンブルの概念があります。アンサンブル法では、複数の学習アルゴリズムを適用することで、単一の学習アルゴリズムからは引き出すことのできない、より優れた品質の結果を導き出します。特定のドメインに対してそれぞれ異なる見方を示す複数のデータ・セットを使用して、機械学習アルゴリズムのアンサンブルを適用すると、パフォーマンスおよび結果に改善が見られることになるはずです。

Netflix Prize は、このアンサンブル法がもたらすメリットを示す一例です。Netflix Prize で最終的に優勝したアルゴリズムは、複数の異なるアルゴリズムそれぞれの長所を生かすために結合して適用したものでした。結合されたアルゴリズムには、特異値分解、制限ボルツマン・マシン、勾配ブースティング決定木が含まれています。

さらに詳しく調べてください

この記事では、コグニティブ・アプリケーションを開発する際のさまざまな考慮事項として、クライアントとサーバーの観点からのアーキテクチャー上の考慮事項、そしてアプリケーションを作成するためのフレームワークとライブラリーについて説明しました。データに関する懸念事項では、主にプライバシーからその特性 (陳腐化など) に重点を置きました。最後に、IoT のような新しいテクノロジーに向けた課題のいくつかを探り、複数のデータ・セットとアンサンブル法を使用することで、結果の改善というメリットがもたらされることを説明しました。


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=1048376
ArticleTitle=コグニティブ・アプリを作成するときに知っていなければならない 5 つのこと
publish-date=08102017