渋谷駅前で働くデータサイエンティストのブログ

元祖「六本木で働くデータサイエンティスト」です / 道玄坂→銀座→東京→六本木→渋谷駅前

「人工知能」ブームに乗り遅れた!という方々に捧げる人工知能(機械学習)まとめ記事

f:id:TJO:20160514165429j:plain
(Photo credit: A Health Blog via Visual Hunt / CC BY-SA)


人工知能」ブームが本格化してまだほんの数ヶ月だと思うんですが、気がついたらTV含む大手メディアが皆こぞって毎日のように「人工知能」を取り上げ、あまつさえ政府や与党の諮問会議でまで「人工知能」の語が飛び交う有様で、一体何をどうしたらこうなるのか僕には全く分かりません(汗)。


とは言え、実際にビジネスの現場でも「人工知能」への期待感が日に日に高まり続けているのは事実で、例えば友人知人の経営者との酒席でも「最近人工知能ってめっちゃくちゃ流行ってるじゃん、あれって実際どうなの?本当に役に立つの?今からでも人工知能事業に参入すべきなのかな?それとも俺たちあいつらに滅ぼされちゃうの?」みたいなことを聞かれることが多いんですよね。


ということで、そういう「人工知能」ブームに乗り遅れたけれども今からでも食らいつきたい!という方々向けに関連記事や情報をまとめてみました。目次は以下の通り。

全く専門性のカケラもない記事ですが、それでも巷のメディア報道や特集記事に比べればもう少し現場の実態に近い話をメインにまとめたつもりなので、参考になれば幸いです。

Disclaimer

そもそも僕自身は機械学習を含む人工知能技術の研究者でも開発者でもなく、あくまでもそれらの技術の恩恵に与る実務家です。このため、記事中では研究開発に関する事柄は取り上げず、実務として必要とされる範囲の事柄のみを取り上げるに留めております。また記事内容には正確を期していますが、不正確だったり誤っている箇所を含む可能性があることを予めご了承下さい。またもし誤っている箇所を見つけた場合はコメント欄などでご遠慮なくご指摘下さい。

この記事を読む前に


[twitter:@kazoo04]さんがひとりアドベントカレンダーとして様々な角度から「人工知能」についてまとめたブログ記事リストを公開されています。

僕と専門領域が一部重なることもあり*1、ぶっちゃけ僕がブログにでも書こうかなと思っていたことまで全て先に書いて下さってしまっているので、こんな今更感のある記事を読むよりは先にこちらの[twitter:@kazoo04]さんの一連の記事をお読みになることをお薦めいたします(笑)。それでもアドベントカレンダーの記事全てを読むのは面倒だ!というせっかちな方のみ、ここより下のテキストをお読み下さい。


人工知能」は現在では「機械学習」を初めとする様々な情報処理技術から成る複合領域


端的に言えば、Wikipedia日本語版及び人工知能学会の特設ページにその定義が書いてあります。

特に人工知能学会の特設ページから引用すると、人工知能研究は以下の下位カテゴリから成っています。

ということで、一口に「人工知能」と言っても非常に多くの分野を含んでいることが分かるかと思います。ただし、その中でも現在巷で「人工知能」としてもてはやされているもののコアにあるのは概ね機械学習自然言語処理、画像認識、音声認識データマイニングあたりの分野ではないでしょうか。


ですので、巷で人工知能」と言った時には基本的には「機械学習をコアとする様々な情報処理技術の塊」と捉えるべきかな、と個人的には思います。なお初心者にはかなりキツいかもしれませんが、この分野の研究者として著名な[twitter:@tanichu]先生の以下のご著書が「人工知能とは何ぞや」を概観する上ではベストではないかと思います。

イラストで学ぶ 人工知能概論 (KS情報科学専門書)

イラストで学ぶ 人工知能概論 (KS情報科学専門書)

機械学習に限らず、様々な関連分野についての説明もなされているので個人的にお薦めの一冊です。


「強いAI」と「弱いAI」


世の中の人々が想起する「人工知能」(Artificial Intelligence: AI)というと、ステレオタイプですが例えば鉄腕アトムとかドラえもんのような「高度な知性と意識と感情など『心』を持つロボット」のことを指すのではないでしょうか。けれども、今現在巷で話題になっている「人工知能」とは果たしてそういうものなのでしょうか? この点についてもWikipediaの解説記事をご覧になられるとよろしいかと。

コンピュータが強いAIと呼ばれるのは、人間の知能に迫るようになるか、人間の仕事をこなせるようになるか、幅広い知識と何らかの自意識を持つようになったときである。知能指数のような人間向けの知能尺度を機械の知能にそのまま当てはめるのは簡単ではないため、以下のような人工知能の知能を計る簡単な方法が提案されている。

知能とは、現実についてのモデルを持つことであり、そのモデルを使って行動計画を立てたり、将来を予測する能力である。モデルの複雑性と精度が高くなって計画立案や予測に要する時間が短くなればなるほど、知能も高いと言うことができる。

強いAIとは対照的に、弱いAIは人間がその全認知能力を必要としない程度の問題解決や推論を行うソフトウェアの実装や研究を指す。弱いAIに分類されるソフトウェアの例として、ディープ・ブルーのようなチェスプログラムがある。強いAIとは異なり、弱いAIが自意識を示したり、人間並みの幅広い認知能力を示すことはなく、最先端とされるものでも知能を感じさせることのない単なる特定問題解決器でしかない。

(強いAIと弱いAI - Wikipedia)

この定義に従えば、世の中で今もてはやされている「人工知能」の多くは基本的には「弱いAI」である、とみなして良いかと思います。実際、「人工知能」に基づくシステムで現在使用されているもののほぼ全てが「機械学習」に基づいてプログラミング言語で書かれたシステムによって動いています。


例えばeコマースサイトにおける「商品推薦」やスマホアプリにおける「類似画像検索」などの機能も、「人工知能による」システムとうたわれていることが多いですが実際に裏側で動いているのは「機械学習」であるケースがほとんどです。


では「機械学習」とは何なのか


ここまで、「いわゆる人工知能」とは「機械学習をコアとする関連技術群」という説明をしてきました。では「機械学習」とは何なのでしょうか? これについては以前このブログでも「統計学機械学習との違い」というテーマで論じたことがあります。

平たく書くと機械学習とは「過去データに基づいて未来のデータの値を予測するモデルを作る技術」*2で「そのモデルが必ずしも明示的にルール化できるとは限らない」*3ものです。

f:id:TJO:20150917135158p:plain

教師あり学習」「教師なし学習」といった下位カテゴリもあり、一口で説明するのはなかなか難しいのですが、どのタイプの機械学習であっても「ある程度以上の規模のデータセットが必要」です。むしろデータセットをどう確保するか?という方がビジネスに機械学習を活用する上での最大のポイントにして最大の障壁と言っても良いでしょう。


その点で言うと、かつてのバズワードだった「ビッグデータ」と機械学習との相性は非常に良いとも言えます。「ビッグデータ」ブームの頃に大規模データを取得・集約するシステムを整備していた企業であれば、機械学習を導入する意義は大いにありそうです。


ビジネスにおける機械学習で予測したい「もの」「こと」には様々なものがあり得ますが、例としてはeコマースサイトで商品購入するユーザーは誰か、アパレルサイトで特定のカテゴリの洋服に興味を持ちそうなユーザーは誰か、あるタイプの保険商品の契約を検討しているユーザーは誰か、特定の企業の求人への応募を検討しているユーザーは誰か、といった情報を予測しているという事例があります。これを予測することで、効率良くマーケティングを進めることができるというわけです。


ディープラーニング」とは何か


巷のメディア記事などで今や「人工知能」の代名詞とまで言われているのが「ディープラーニング」(Deep Learning)です。時々勘違いしたメディア記事を見かけることがありますが、基本的にはDeep Learning機械学習の中の一手法であり、20世紀後半に研究が進められた一連のニューラルネットワーク(Neural Network)とその関連技術の発展形です。


その研究史の中では、Neural Network不遇の時代にも一貫して研究活動を続け、Deep Learningとしてその研究成果を結実させたGeoffrey Hinton, Yoshua Bengio, Yann LeCunの3人が最大の貢献者として知られています。うちHintonはGoogleにも、LeCunはFacebookにも籍を置いていて、Deep Learningの産業応用にも大きく貢献しています。


Deep Learningは一言で表現すれば「Neural Networkを何層にも重ねることで『超高精度』で『未知データにも対しても高いパフォーマンスを出せる』ように工夫された機械学習です。2006年にHintonによって初めて発表されて以降日の出の勢いで性能向上が進み、2012年にはその発展形である畳み込みニューラルネットワーク(Convolutional Neural Network: CNN)が国際的な画像認識コンペImageNet: ILSVRCでヒトの認識精度を上回る精度を叩き出したことで、一躍有名になりました。

https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Typical_cnn.png/800px-Typical_cnn.png
(Typical CNN architecture - Convolutional neural network - Wikipedia)


僕自身は機械学習の研究開発もスクラッチ実装も専門としていないのであくまでも触れたという程度ですが、有名な手書き文字データセットMNISTに対してCNNを適用した際のパフォーマンス比較実験を以前このブログでもやったことがあります。

この記事の中でも触れているように、CNNは従来の機械学習手法のいずれよりも高い精度を達成しています。


一方、この記事の中で色々試行錯誤しているところからも見て取れるように、Deep Learningは一般にベストのパラメータ設定でないと高いパフォーマンスを打ち出すことができず、そのパラメータ設定も多種多様で煩雑なため、専門知識と試行錯誤なくしてその真価を発揮させることが難しい機械学習手法*4です。それゆえ世の中にはDeep Learningよりも他の機械学習手法を用いた方が現実的かつパフォーマンスでも上回るというビジネス課題も多い、という点に注意が必要です。


特に巷では「Deep Learningは自分で特徴量を作り出す・抽出するのでヒトが手を下して特徴量を決める必要がない」と喧伝される向きもありますが、CNNの畳み込み層での処理がそう見えるだけで、機械学習として運用する限りは他の手法同様にヒトが大部分の特徴量を決めない限りはDeep Learningといえどもきちんと機能しないという点にもご注意を。


また、概してDeep Learningはデータセットが大きければ大きいほど*5その真価を発揮しやすい機械学習人工知能)ですが、言い換えるとそれを支える強固なITインフラ基盤が必要だとも言えます。例えば先述のAlphaGoもその本体はクラウド上に構築された巨大な分散並列計算システムだと伝わります。世の中「人工知能」というと自律的に動くロボットや巨大な計算機サーバーのような代物を想起する人々も多いようですが、実際にはAWS, Azure, GCPなどのクラウドコンピューティングサービス上で動くものであることが多いということも覚えておいて損はないでしょう。


元となったNeural Networkにせよ、現在の主流であるDeep Learningにせよ、最初に構想された時はヒトの脳(特にその視覚野)の構造を模倣することを念頭に置いて開発されています。しかしながら、現代では「脳の模倣」というよりはむしろ応用数理学的・情報科学的な側面から研究・開発されることが多く、必ずしもヒトの脳との類似点が意識されているわけではない点に注意が必要です。最近でもこのような指摘が出ているようです。

僕も大筋では同意で、現在のDeep Learningは例えばヒト脳視覚野におけるV1-V4野の間のバイパス投射や半球間連絡投射や視床核からの背景投射などの構造を反映していないわけで*6、個人的にはDeep Learningとはあくまでも「ヒト脳の構造にインスパイアされて編み出された機械学習がさらに情報系分野の中で独自の進化を遂げたもの」とみなした方が良いのではないか、と考えています。


「シンギュラリティ」は実際問題到来し得るのか


2045年には人工知能がヒトの知性を上回る『シンギュラリティ』(Singularity: 技術的特異点)という事態を迎える」という話題が昨年あたりからかなり騒がられるようになっているわけですが。。。この辺の話題は過去記事でも取り上げたことがあります。

まず、上述の「強いAI」の研究開発自体がそもそもあまり進められていない(「弱いAI」の研究開発が大半)という現状において、「人工知能」が近未来のうちにそのレベルに到達すると考えるのは無理があります。


少なくとも、今の「人工知能」は自分ではデータの前処理すら出来ませんし、それどころかデータを取得するシステムを構築することも、それを支えるためのインフラを自ら整備することもできません*7。また、これらの課題が10年や20年、それこそ2045年までに解決するとも個人的には思えません。ターミネータースカイネットのような代物が登場するまでには、かなり長大な時間がかかるのではないでしょうか。


そして、Deep Learningの三大始祖のひとりでもあるYann LeCunも今年3月のCERNでの講演の中で、「飛行機は確かに鳥を真似て作られたが鳥と違って飛行機は羽ばたくこともできないし羽根すらもない」という隠喩を引いて、「今のままの人工知能機械学習)研究の延長上に真の強いAIが生まれると考えるのは時期尚早だ」という趣旨のことをコメントしたと伝え聞きます。世界最高の「人工知能」の専門家であっても、シンギュラリティ到来の可能性についてはむしろ否定的な態度を取っているということは知っておいて損はないかと思います。


人工知能」はヒトの仕事を奪うのか


最近はどのメディアも「人工知能の発展でなくなる仕事」特集とか好んで組んでいますが、そもそも機械化・自動化技術が発展すれば人手でやってきた仕事がなくなるというのはこれまでにも幾らでも起きてきたことです。


例えば、電話交換手は自動交換機の登場とともに不要な仕事になりましたし、かつて人手で算盤を弾いたり電卓を叩いて集計していた会計仕事の多くはExcelや類似のスプレッドシートやそれらを統合した会計ソフト・システムによって置き換わられています。


その意味で言えば、えげつないことを書くと人工知能が発展しようがしまいが社会全体で技術革新が進めばなくなってしまう仕事がそもそも多い」し、「それらは急に起きるのではなく技術革新とともに少しずつ進んでいく」ということなのだと思います。例として、コンピューター自動取引の登場で、株のトレーダーも人手で行うケースは減っていると伝わります。同種の「これまで人手でやってきたけれども今後は人工知能で」というケースは今後も「少しずつ」増えていくのだと思います。


一方で、コンピューター自動取引が主流になった株取引の世界であっても、そのアルゴリズムやロジックの設計は依然としてヒトがやっているわけです。「人工知能」が代替する仕事が増えたからといって、ヒトの仕事がなくなるわけではない点に注意が必要だと思います。人工知能」の台頭で減るのはヒトが手を動かして行う仕事であって、手は動かさなくても頭を使わなければいけない仕事は依然として「人工知能」では代替するのは難しい、ということです。


他にも、WIREDが指摘するように「横断的な能力を必要とする」クリエイティブな仕事も「人工知能」には当面取って代わられないままでしょう。


人工知能」が機械学習をコアとする体系である限りは基本的に「過去データからの学習」を必要としており、過去にデータの全くないものから何かを独自に創造するのは依然として極めて難しいという点にも注意が必要でしょう。人工知能」は基本的には過去データに基づく仕事をするものであり、過去に前例のないものを創造するクリエイティブな領域は今後も当面はヒトの仕事であり続けると思います。


ただ。。。ここに重要なポイントがあって、「過去に前例のあるものを踏襲する」仕事であればそれがどれほど知性を求められる仕事であったとしても、容易に「人工知能」によって取って代わられる可能性が高いと個人的には考えています。例えば、IT業界で思い付く範囲だとサポートエンジニアなんかは代表的な例だと思いますが、最近人工知能というか機械学習による自動化が導入されている事例として特許紛争分野におけるデジタル・フォレンジクスがあります。「過去に蓄積された膨大な前例を紐解く」系の仕事なら「人工知能」で代替可能だと考えると。。。意外と少なくない数の職業が挙げられるのではないでしょうか。


とるものもとりあえず「人工知能」の主要パートである「機械学習」についてもっと詳しく知りたい人へ


以前このブログでも書評したことのあるこちらの本を読まれるのが良いかなと。

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

データサイエンティスト養成読本 機械学習入門編 (Software Design plus)

機械学習とは何ぞや」「機械学習はどのようなことの役に立つのか」といった初歩の初歩に関する説明から、機械学習がどのような原理に基づいて動くのかという一般的な説明、そして個々の機械学習手法のアルゴリズムの平易な説明から、それぞれの機械学習手法をR, Python, Julia, Scalaといったプログラミング言語で実践する方法まで、機械学習の全ての基礎がコンパクトにまとめられています。


人工知能」というか「機械学習」を自社に導入したければ


ここまで読んだところで、経営者の方であれば自社に「人工知能」を導入したいと、エンジニアやビジネスパーソンの方であれば自分の現場に「人工知能」を導入したい、と思うかもしれません。


基本的に、それが「機械学習」なのであれば(そして自然言語処理など「人工知能」カテゴリ内の隣接領域であれば)様々なプログラミング言語に対応したライブラリ・パッケージが無償で公開されています。商用利用を認めるライセンスのもとで公開されているものも多く、自社エンジニアであればそれらの機械学習ライブラリを用いて機械学習システムを内製するも良し、ITベンダーに頼むなら同様に対応してもらうも良し。もちろん、Python, R, Java, Scalaなど機械学習分野で広く用いられているプログラミング言語に通じている人であれば、ご自分で試してみるのも良いでしょう。


例えばPythonであればscikit-learnという機械学習ライブラリが非常に有名かつ広く利用されていますし、RならCRAN Task View: Machine Learning & Statistical Learningというライブラリのシリーズに機械学習ライブラリがまとめられていてこちらも広く利用されています。ここでは割愛しますが、これらのライブラリを利用した機械学習システム開発の様子を紹介しているブログやwebサイトは世の中既に多数ありますので、ググってそれらを参照されるのも良いでしょう。


またDeep Learningも例えばGoogleが公開しているTensorFlowMicrosoftが公開しているCNTKAmazonが最近公開したDSSTNEなど、大手グローバルtech企業各社が無償で配布しているライブラリがあり、これらを用いて同様にDeep Learningを導入することができます。日本からもPreferred Networksが公開しているChainerというライブラリがあり、国内ではこちらの方が人気が高いです。


ただ、これらのライブラリを利用するには機械学習そのもののパート以外の部分で依然として大量のエンジニア業務を要するため、実際にビジネスとして立ち上げる際にはそこのリソース確保が大変になるかもしれません。そこで、最近ではクラウドコンピューティングを提供するグローバルtech企業各社から「クラウド機械学習」が提供されるようになってきています。

AWSを提供するAmazonからはAmazon Machine Learning、Azureを提供するMicrosoftからはAzure Machine LearningGCPを提供するGoogleからはGoogle Cloud Machine Learningがそれぞれクラウド機械学習ソリューションとして提供されており、比較的平易に機械学習システムを構築できるようになってきています。


人工知能」というか機械学習を自社に導入させたい、もしくは自分の現場に導入してみたい、という方々にとってもどんどん負担が軽減されて使いやすくなってきているのは間違いないと個人的には感じています。


気軽に「機械学習」を実践できる場がある


一般に機械学習は豊富なデータを抱える大企業の独占物と思われていて、そうでない人たちにはなかなか実践しにくいものと思われがちです。ですが、現在ではそういう人々でも気軽に機械学習の腕試しをできる場があります。その代表的なものがKaggleです。


Kaggleは「MNIST手書き文字データセット」「タイタニック号の死亡者・生存者リスト」のようなオープンデータセットから、協賛企業・機関*8から提供されたデータセットまで、様々なデータセットに基づく機械学習コンペの数々を主催しています。それらのコンペは単にスコアを競うだけのものから上位入賞者には賞金が出るものもあり、中には(企業提供のものが大半ですが)上位入賞者には協賛企業からのリクルーティングが来るというコンペまであります。


そしてKaggleには特に参加資格は設けられていないので、機械学習に興味のある人であれば誰でも参加登録でき、気軽にコンペに参戦することができます。しかも、コンペによっては終了すると上位入賞者による機械学習手法解説ブログ記事が公開されることもあり、"Kaggle Master"*9と呼ばれる上級者たちがどんな工夫をしているかといった実践的な技術や知識を学ぶこともできます。以下に例として日本が誇るKaggle Masterでいらっしゃる[twitter:@Keiku]さんによる解説記事を挙げておきます。

企業の中には、自社のデータ分析部門にトレーニングの一環としてKaggleへのチーム参戦を求めるところもあると聞いています。今後も気軽に機械学習を実践できる場としてのKaggleの重要性は上がっていくのではないかと個人的には思っています。

*1:かずーさんも神経科学の専門知識がおありだと伺いました

*2:教師あり学習を想定しています

*3:SVMやアンサンブル学習やDropoutを伴うDeep Learningなど陽にモデルを記述できない機械学習手法を想定しています。いやSVMは頑張れば陽に記述できるかもしれませんが。。。

*4:ただしそのパラメータ設定自体を別に機械学習を用いて最適化する方法論も現在各方面で研究されています。いずれは自動化されるかもしれません

*5:サンプルサイズという意味でも次元数という意味でも

*6:いきなり専門用語だらけにしてしまってごめんなさいm(_ _)m

*7:そのためには最低でも例えばAWS, Azure, GCPといったクラウドサービスにクレジットカードを登録してアカウントを契約する手続きを「人工知能」が自らやる必要がある

*8:中にはコンペでベストパフォーマンスを叩き出したモデルを実地に採用するというところもあるそうです

*9:個々のコンペで優勝or上位入賞して尚且つコンスタントに同様の結果を出した(つまりまぐれではなくきちんと継続的に上位入賞し続けられる)参加者にだけ与えられるタイトル