自動運転カーを操縦するAI(人工知能)や、ディープラーニングによって「世界最強」の名をほしいままにする「囲碁AI」など近年のコンピューター技術は「AI」「ディープラーニング」「機械学習」というキーワード抜きには語れない状況となっています。101」では、それらの言葉の関わりがわかりやすく解説されています。このスライドでメイズ氏が解説するのは、「機械学習とは何で、どんな種類があるのか?」「その仕組みは?」「どのように使われる?」「どこに向かっている?」という点およそ2年にわたる作業の集大成としてまとめられたのが、この100ページにも及ぶスライドです。「AI」とは「機械によって再現されるヒトの知性」と定義され、つまりヒトが行っているタスクをコンピューターに担わせるためのものです。AIにまつわる議論の焦点は時代によって変化します。現在主流のAIは「ナローAI」と呼ばれるもので、「ヒトよりも巧みに行える物事が、あらかじめ定義された一個だけ、あるいは数個に限られる」というもの。「機械学習」はナローAIの一つに数えられるものです。クリエイティブ分野、翻訳、欠落する部位を全体の中から推測して復元または変形する技術などの分野です。「機械学習」とは「経験をもとにデータの中からパターンを発見して学習することができるAIを実現するためのアプローチ」と定義されます。機械学習は、人間がプログラミングすることでコンピューターに能力を身に付けさせるのではなく、データを与えるだけで自らアルゴリズムを作り、パターンを認識して学習することが可能です。機械学習は、「物事を本質的に予測する」ためのもの。自らデータを取得し、パターンを学習することで、未知のデータに遭遇した時でも学習したパターンをもとに分類することが可能です。機械学習の優れている点は、一度学習したデータから再び学習することができるという点。そこには人の手が介在する必要がないという、非常に大きな利点が存在します。従来のプログラミングだと、コンピューターには厳格なルールを与えなければなりませんでしたが、機械学習プログラミングでは、「メールを分類し、エラーを減らすために自己変化し、繰り返せ」という指令を与えるだけで、あとは勝手に機械が学習を続けてくれます。「ディープラーニング」とはこれは「機械学習を実行するための技法」と定義されるもので、この中には人間の脳の仕組みを再現する「ディープ・ニューラル・ネットワーク」という概念が含まれます。古いのが「AI」で、その概念は1950年代にすでに提唱されていました。その後、1980年代に「機械学習」が普及しはじめ、2000年ごろからは「ディープラーニング」が実用化されたことによってナローAIが実現されるようになってきたというわけです。機械学習システムをトレーニングする際には、「特徴」または「属性」が与えられます。これは、学習しようとするものが備えているプロパティを意味しています。果物を例にとると、たとえば「色」と「重さ」という属性が挙げられます。「2つの属性」は「2つの次元」を意味します。2次元は,2次元グラフで表現することができます。リンゴ(赤・緑の点)とオレンジ(橙色の点)をプロットしたグラフが存在する場合、機械学習はデータのパターンを認識することでリンゴとオレンジを区別することが可能になります。この属性データの与え方を誤ると、満足のいく結果を得ることができなくなります。リンゴとオレンジについて、今度は「種の数」と「熟れ具合」の属性でデータを与えた場合だと、その結果は、全ての点が同じ領域に固まってしまい、データを区別して2つの果物の違いが認識できない状態となってしまいます。どのようなデータをもとに学習を行うのか、という点が機械学習にとっては重要な要素となってきます。果物の例では2つの次元で判断が行われましたが、この次元はいくつにでも増やすことが可能です。3次元での判断は序の口で、学習する対象によっては「20次元」などに高次化する場合があるほか、個別のドットが1つの次元を構成する画像認識の場合に至っては「数百万次元」というレベルに達する場合も。化しますが、基本的な仕組みは2次元の例で挙げたようなものがベースになっています。次に重要になってくるのが、「いかにバイアスがかかっていないデータをトレーニング用に用意するか」ということです。「ネコ」について学習させたい場合、妥当な結果を得るためには1万件程度のデータを与える必要がでてきます。与えられるデータは「画像」だけでなく、「複数の要素を含む表」や「テキスト」「計測機器によって得られた値」「音サンプル」など、対象となるものに応じて変化します。機械学習は「知らないこと」については予測を行うことができません。動物というものについて「足の数・色・重さ・種類」の要素をもとに「4・黒・10kg・犬」「2・オレンジ・5kg・ニワトリ」と学習させていた時に、新たに「牛」情報として「4・黒・200kg」という情報だけを与えると、コンピューターはこのデータをもとに「犬」と判断します。コンピューターはまだ「犬」と「ニワトリ」についてしか学習しておらず、より近い方を予測するためです。これらの内容については、以下のYouTubeムービーを見るとより良く把握することができます。Training)は、ラベリング済みのデータを与えることで学習を行わせる方法です。「果物」について「色・重さ・種類」という要素を教え込ませておくことで、新しい情報が入力された際に予測させるもので、現在はこの分野の開発が最も発達しています。Training)は、ラベリングされていないデータセットをもとに機械が自ら学習を行うという仕組みです。3つの塊を構成する要素があるような場合に、教師なし学習ではコンピューターがまず「3つのクラスタがある」ということを認識し、次にそれぞれをカテゴリ化します。ここで重要なのは、コンピューターにはカテゴリがいくつあるのかは事前に知らされていないということです。それぞれのカテゴリは例示されているような明確さで塊を構成しているとは限りません。実行と失敗(トライ・アンド・エラー)を繰り返す中で、徐々に正しい方向を見いだすという学習方法です。コンピューターに三目並べやブロック崩しのようなゲームをルールを教えずに実行させ、偶然に良い結果を出した時には報酬を与え、悪い結果の時には報酬なし、あるいは罰を与えます。報酬を最大限にすることを目標をするよう設定されたコンピューターは、このトライ・アンド・エラーを膨大な回数にわたって繰り返すことで、最終的には最も効率よく正答にたどり着く方法にたどり着きます。機械学習が動作する方法はいくつも存在します。以下、2次元のデータ例をもとにその仕組みが解説する。グラフ上にいくつかの点が示されている時に、その近似曲線を求めるというのが機械学習の最もシンプルな例です。このようにして求められた近似曲線をもとに、「X」の値にある数値が入力された際に、「Y」の値が予測されます。これは、統計学の分野で回帰分析と呼ばれる手法で、機械学習はその本質として、このような近似曲線を求めるようになっています。2つのクラスタがあってその中間を分ける直線が引かれている場合、それぞれのクラスタは「赤クラスタ」と「青クラスタ」に分類されます。現実にはいずれかのクラスタに属していながらも、何らかの理由で異常値を示す個体(Outlier)が存在します。このような場合でも機械学習はさまざまな要素から正しくクラスタを分類することが可能です。例では単純な直線が示されていますが、実際には二次関数レベルの複雑な線でクラスタが分類されることがほとんどです。「線」でクラスタを分類するのではなく、入力された値とすでに存在するクラスタとの近さ(距離)をもとに、属するクラスタを予測する方法があります。グラフがある時に、新しい点がグラフの右下に入力されたとします。すると、機械学習アルゴリズムは「最も近い3点が青クラスタに存在する」という理由で、新しい点を青クラスタと予測します。これはk近傍法と呼ばれる手法です。◆ニューラルネットワーク人間の脳には、100兆個ともいわれる神経細胞のつながり「ニューロン」が存在しているといわれています。それらのニューロンは、互いに刺激を交換し、相手に対して出力を与えます。機械学習では、学習した内容から予測を行うために人工のニューラルネットワークが用いられます。生き物の神経を参考にしたニューラルネットワークを構成する基本単位で、複数の入力を受け取ります。各入力には「重み」が加えられ、入力の値との積を合計した数値にバイアスが負荷されます。その結果が一定の閾(しきい)を超えた場合、出力として「シナプス」を生成され、また次のニューロンへと入力され、プロセスが連鎖的に続きます。1960年代から概念が存在した「ニューラルネットワーク」の古い形で、全てのレイヤーが次のレイヤーにつながり、さらにその方向は一方向に限定されているもの。文字どおり、いくつもの隠されたレイヤーからなる深いニューラルネットワークのことを指します。それぞれのレイヤーはその前から受け取った情報から学習を行うことで、よりレベルの高い学習を行うことができます。これらの隠されたレイヤーは普通、次元数が少ないためにデータをより良く一般化でき、同時にオーバーフィットすることもないという利点があります。これらの中間レイヤーは、「特徴の特徴」を学習することが可能です。画像に含まれる「境界(エッジ)」が「顔のパーツ」につながり、さらにそれが「顔全体」につながることで、システムは顔を認識できるようになります。このあたりの詳細は、以下のムービーで詳しく解説されています。このムービーでは「畳み込みニューラルネットワーク」が画像認識を行う時の様子について詳しく説明していす。複数の変数の関係を予測し、モデルをあてはめるもの。回帰は統計学で用いられる手法であり、統計的機械学習に組み込まれています。モデルにとって重要であるかまたは必要とされるトレーニングデータのインスタンスまたは例による決定問題です。このような方法は、典型的には、最良の一致を見出して予測を行うために、類似データを用いて例示データのデータベースを構築し、新しいデータをデータベースと比較します。この理由から、インスタンスベースの方法では、トレーニングの必要はなく、例のデータだけを必要とします。保存されたインスタンスの表現とインスタンス間で使用される類似性の測定に焦点を当てます。ディシジョンツリー(決定木)手法は、データの属性の実際の値に基づいて行われた決定のモデルを構築します。意思決定は、与えられたレコードに対して予測の決定が下されるまで、ツリー構造内で分岐します。決定木は、分類と回帰の問題のためのデータで訓練されます。決定木はほとんどの場合で高速で正確であり、機械学習では良く好まれるものです。ベイズ法とは、分類や回帰などの問題に対してベイズの定理を明確に適用する方法です。その良い例は、ある電子メールがスパムであるかどうかを判断するために「使用されている言葉」などの可能性のあるさまざまな特徴を使用するような場合です。回帰と同様に、クラスター分析は問題のクラスとメソッドのクラスを記述します。クラスター分析法は、セントロイド法および階層型などのモデリングアプローチによって典型的に編成されます。すべての方法は、データ内の固有の構造を使用してデータを最高の共通性のグループに分類し、分類することに最も適しています。相関ルール学習方法は、データ内の変数間の観察された関係を最もよく説明するルールを抽出します。これらのルールは、大規模な多次元データセットにおける、重要かつ商業的に有用な関連を発見することができます。人工ニューラルネットワークは、脳内の生物学的ニューラルネットワークの構造および、または機能にインスパイアを受けたモデルです。これらは、回帰と分類の問題によく使用されるパターンマッチングのクラスですが、実際には、あらゆる種類の問題タイプに対して数百のアルゴリズムとパターンからなる巨大なサブフィールドです。ディープラーニング法は、豊富で安価なコンピューター技術を利用する人工ニューラルネットワークへの最新の形態です。大きく複雑なニューラルネットワークを構築することが念頭に置かれており、大規模なデータセットにはラベル付きデータがほとんど含まれていない「半教師付き学習問題」に関連します。クラスター分析と同様に、次元削減はデータ内の固有の構造を見つけ出して活用します。この場合、これはより少ない情報を使用してデータを要約または記述するために管理されていない方法または命令です。これは、次元データを視覚化したり、教師あり学習法で使用できるデータを単純化するのに役立ちます。これらの方法の多くは、分類および回帰における使用に適合させることができます。アンサンブル学習法は、独立して訓練された複数の弱いモデルを組み合わせることで全体的な予測を行うためのモデルです。どの弱いモデルのタイプを選んで、全てを組み合わせる方法を決定するかに労力が費やされます。これは非常に強力な技術であり、非常に人気があります。出力される値が「8.3984」のように小数点を取るパターンです。入力値が「200グラム」のオレンジだった場合に、出力値は「4.2インチ」の直径、というふうに数値を予測して出力します。直線回帰ではこの予測を直線にあてはめることで、X軸の入力に対してY軸の数値を出力します。文字どおり確率を推定するというもので、数値は0から1までの範囲の小数点を取ります。数値が「0.751」の時は、その確率は「75.1%」であることを意味します。以下のガラス容器の中に入っているブロックの数を推定するときに、出力が「9」と「54.3%」であるような場合。これは、入力されたもののクラスを分類するというもので、出力される値は「連続値」や「確率推定」とは異なりラベル化するものとなります。上記のいずれかの出力を得ることができたら、今度はそれをプログラムを用いて活用する段階です。目にしたものが80%の確率で猫だとしたら、エサをあげたくなるでしょう。その予測が75%だった場合は、もう少し確実な答えが出るまで待つかもしれません。信を作成する「スマートリプライ」、そして目(=カメラ)で見た物と手の動きをロボットに連携させる学習を行わせる時など。「Autodraw」では、何百万人という人に落書きをしてもらい、そこから学習したAIが自分で落書きできるようにすることが可能です。「Soli」は、デバイスに組み込むことでレーダーのように動作し、ジェスチャーを検知してデバイスのコントロールを可能にする技術。以下のように指をこすりあわせることでボリューム操作やマップの拡大・縮小が可能になります。Buds」はGoogleアシスタントと組み合わせることでジェスチャーコントロールに対応しており、リアルタイム翻訳にも対応しています。Lens」は、スマートフォンのカメラを対象物に向けるだけでいま写っている物を認識し、その店のメニューや口コミ、写真などを表示する。◆その他の機械学習の使われかたここから挙げられているケースは最先端研究の一部であり、すぐには世の中に出てこないものもありますが、そう遠くない未来に実現しそうなものも含まれます。二本脚で歩行したり、バック宙することもできるボストン・ダイナミクスのロボットは、機械学習によってさまざまな機能を学習しています。それぞれのテーマに沿った大量の動画を学習させることで、AIが架空の動画を自ら生成するというもの。現実にはない風景を作り出すことができます。Vectors」では、与えられた画像から文章を生成することが可能です。私にキスしようと肩に寄りかかってきたのでののしってやった。彼は、私が彼のボクサーパンツを着けると美しい少年になるだろうと考え、私を絞め殺そうとした」というものになる。Translator」(物体翻訳者)を使えば、カメラに映った物体を単語に置き換えることが可能です。Hunt」(宝探し)はカメラで撮影した画像を使う機能で、制限時間以内に「コーヒー」や「傘」、「グラス」など決められた物体を撮影するとAIがそれを認識して点数をもらえる。Spotting」は、映画「ピートと秘密の友達」からスピンオフしたARアプリで、ソファーやテレビなど指定された物体にスマートフォンのカメラを向けると、画面上にドラゴンが現れるというもの。これも、画像から物体を認識する技術が使われている一例。複雑性を予測する「大規模なパターンや行動を割り出す」AlphaGoは、複雑な碁の勝負を機械学習を使うことで学習して強くなれるAI。以前は「碁は複雑すぎて人間には勝てない」といわれていましたが、AlphaGoは人類最強棋士を破ったばかりか、もはや人の手を借りなくともゼロから囲碁を覚えて強くなれるレベルに到達。「コンテキストとパーソナライゼーションのための設計」Spotifyは機械学習によってユーザーごとのコンテンツを生成。ユーザーの好みに合致したコンテンツを提供することで、より高いカスタマーロイヤルティを獲得。個人の好みを分析し、最適と思われるデザインを提案します。Ears」は、絵本を読み聞かせる時に特定の単語を検知することで、シーンにあった効果音などを再生する機能。APIが用いられています。アメリカのSFスリラーテレビドラマ「ウエストワールド」に登場するキャラクター「Aeden」がGoogleのAi技術によってデジタル擬人化され、自然言語で人間と会話できるようになっています。同作はこの技術によってもエミー賞を受賞しています。◆機械学習を使えるGoogleの製品やAPIGoogleのサービス全体の中で機械学習に関連するものは以下のとおり。API」などがあります。APIを使うと、コンピューターが物体や建物、ロゴ、顔や感情までをも理解することが可能になります。画像から場所を割り出したり、写真に写っている物を認識したり、顔の表情から感情を推測したりすることが可能。構造化されていないテキストから機械学習でインサイトを見つけ出すことが可能なもの。これを使うことで、文書やニュース記事、ブログ投稿などの中から人物や場所、イベントについての情報を引き出すことが可能になります。これにより、自社の商品がSNSでどのように評価されているのかを分析したり、カスタマーサービスに寄せられているメッセージを総合して全体的な傾向をつかんだりすることが可能になります。TensorFlowは、より幅広い用途が可能になる機械学習システムで、画家が描いた絵画のパターンを高度に認識してオリジナル作品の外側に絵画を拡張したり、囲碁で人間を破るなどの能力を獲得することができます。Googleアシスタントでは、アプリに相当する機能「アクション」が用意されており、ホームオートメーションなどの機器を操作する「ダイレクトアクション」と、双方向の対話が必要な場合に用いることができる「カンバセーションアクション」の2種類が提供されています。DialogflowGoogleアシスタントのアクション開発やIoTデバイスなどで会話によるエクスペリエンスを可能にするプラットフォームがDialogflowです。これを使うことで、既存のサービスに会話型エクスペリエンスを追加したり、チャットボットやアシスタントをGoogleアシスタントに接続することが可能。◆まとめ機械学習またはデータサイエンスは、複数の領域からなる集合体のようなもの。ある1つの固まりが別の分野のサービスの一部の様相になっているなど複雑に絡み合っている様子を垣間見ることができます。優れた機械学習システムを構築するためには多くの時間やリサーチ、お金などが必要になりますが、各分野の研究が進むことでさらに優れた機械学習が実現されるようになります。TensorFlow(テンソルフロー)は、幅広い課題にわたる機械学習のためのオープンソースソフトウェアライブラリである。Googleによって開発された。訓練することができるシステムのための要求を満たすためである。learning)とは、人工知能における研究課題の一つで、人間が自然に行っている学習能力と同様の機能をコンピュータで実現しようとする技術・手法のことである。産業や学術の広いドメインに適用でき、オープンソースで、無料である。ベイジアンネットワークなど計算、機械学習系のサポートが強力です。searchカメラから取得した映像にdlibを用いた顔認識をする。顔器官検出は、目・鼻・口などの位置を得ることで、表情や、まばたき、口の動きなどを知ることに使われます。人物の顔認証を行う際には必須の機能として知られています。オープンソースのライブラリでここまで充実している時代になったのです。それでは処理対象となる領域が多くなりすぎる上に、対応できる形状やサイズに制限が発生します。Searchというアルゴリズムが有用です。segmentation)と呼ばれ、GoogleNet(http://arxiv.org/pdf/1409.4842.pdf)でも同様のパイプラインが利用されていたりする非常にメジャーなものです。Searchを使おうと思うとオープンな実装は余り見つからず、caffeのサンプル(https://github.com/BVLC/caffe/blob/master/python/caffe/detector.py)で参照されているモジュールも実行するためにMATLABが必要だったりします。MATLABのランタイムを設定する事自体、なかなか骨の折れる作業です。Serachのオープン実装をPythonモジュールとして提供します。VIEWSCarlのフォトアルバムファインダー越しの絶景を集めて。