Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

「機械学習 By スタンフォード大学」勉強会 2015.09.11

73,956 views

Published on

シリコンバレーの有名大学であるスタンフォード大学にて、Andrew Ngの教える機械学習の講義が人気を集めているそうです。

Andrew Ngは相当な有名人で、よくニュースで名前が出てきます。有名な例では、グーグルが「Google Brain」という名のニューラルネットワークを構築し、YouTubeの動画から「猫」を教師なし学習で認識したといったニュースが流れましたが、このプロジェクトはAndrew Ngが主導したものです。

このAndrew NgがCourseraというオンラインコースで機械学習の授業を公開しています。このたび私も受講しまして、ようやく修了しました。

[Machine Learning by Stanford University]
https://www.coursera.org/learn/machine-learning/

内容的には、Deep Learning登場前の機械学習について、特に応用を意識した講義の構成になっています。たとえば、以下の様なトピックが含まれていました。

- ニューラルネットワーク(バックプロパゲーション)
- スパムフィルターの作り方
- 異常検知の方法
- リコメンデーションエンジンの作り方
- OCRの作り方
- オンライン学習
- 機械学習を用いたプロジェクトの進め方

講義は全体的に非常によくまとまっていまして、個別の数学的な内容に深入りすることなく、かといって表面をなぞるような感じでもない、バランスが取れた内容でした。明確に、機械学習を実プロジェクトに適用することに軸足を置いていまして、そのための様々な助言が講義の中に散りばめられていたという印象があります。

ちなみにAndrew Ngは、今やGoogleの猫の人、Deep Learningの人、というイメージが強いので、この講義にもDeep Learningについての話が含まれている事を個人的には期待しましたが、残念ながらDeepLearningに関しては、この講義に含まれていませんでした。

この社内勉強会では、Andrew Ngの講義のダイジェスト版となるように意識して講義内容を紹介します。機械学習を用いたシステムを構築する際のノウハウは、なかなか得がたいものがあると思いますので、機械学習に興味がある方は勉強会に参加して頂けると嬉しいです。また、機械学習のさわりだけでも分かれば、なぜビッグデータが必要なのかも分かると思います(単純に大量のデータがあると機械学習に有利だからです)。

Published in: Engineering
  • Be the first to comment

「機械学習 By スタンフォード大学」勉強会 2015.09.11

  1. 1. ウルシステムズ株式会社 http://www.ulsystems.co.jp mailto:info@ulsystems.co.jp Tel: 03-6220-1420 Fax: 03-6220-1402 ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 「機械学習 by スタンフォード大学」勉強会 ~Andrew Ng教授のCourseraのオンラインコースを受講して学んだこと~ 2015/9/11 講師役:近棟 稔
  2. 2. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. はじめに  この勉強会は、Andrew Ng教授が以下のURLで公開している機械学習のオンラインコース を受講した内容をもとに、学んだことを紹介するための勉強会です。 もしも機械学習に興味が出てきたり、詳細を知りたくなったら、ぜひこのオンラインコー スを受講してみてください。日本語字幕もあります。  講義の中ではシリコンバレーにおける機械学習プロジェクトについての言及が何度もあり ました。講義を通して、シリコンバレーの様子について少し知ることも出来ます。  講義の中や、生徒向けの宿題ではOctaveというプログラミング言語を用いました。Andre w Ng教授曰く、「C++、Java、R、Python、NumPyみたいに沢山のプログラミング言語 が存在するけれども、手早く機械学習の勉強をしたいのならばOctaveが良い」と話してい ました。実際のプロジェクトにおいても同様で、試行錯誤する段階においてはOctaveを使 うべきだということでした。プロジェクトの最終段階で、それをいよいよ大規模なデータ に適用する段階に入ってからC++やJavaで再実装べきだと教えられました。それはシリコ ンバレーでもよく見かける方法だという事でした。 1 https://www.coursera.org/learn/machine-learning/
  3. 3. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. そもそもなぜ機械学習?  プログラムをハードコードする事が困難な領域が存在するから たとえばスパムフィルターのようなものを作ろうとした時、ハードコードされた プログラムで作ることは困難です。「何々だったらスパムである」というシンプ ルな法則が無いためです。ある単語が多かったらスパムである可能性が高いかも しれませんし、ある宛先から来るメールの場合はスパムである可能性が高いかも しれません。このような不確かでいくつあるか分からないスパムのルールを考え 出して、ハードコードされたプログラムで組むのは大変です。また、スパムの特 徴は日々変化します。そのような変化にプログラマーが追随するのも大変です。 他にも、クレジットカードの不正利用のようなものを自動検出するプログラムを 書くのも困難です。「このような場合は不正利用」という明確でシンプルなルー ルが無いためです。また、スパムと同じく、日々違う形の不正利用が生まれ、ど んな不正利用が今後生まれるか予測もできません。ハードコードされたプログラ ムがこの変化に追随する事は非常に困難です。 機械学習では、プログラムをハードコードする代わりにデータを利用してルール を自動調整します。このようにしておけば、傾向が変化した際、新たなデータを 使ってルールを再調整すれば変化に追随することが出来ます。 2
  4. 4. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 機械学習のざっくりとしたイメージ  機械学習は、プログラムをハードコードすることなく、データをもとに汎用の関数を調整 することによって、有用な関数を得る方法です。ざっくりとしたイメージは以下のように なります。  学習フェーズ (得たいのは調整済みのhypothesis関数) hypothesis関数は、後に便利に活用したい関数です。  調整済みのhypothesis関数を使う時は、手組の関数と同じで、単に呼び出して使うだけで す。引数を与えると、返り値が返って来ます。たとえば、写真を与えると、人が写ってい るか否かをtrue/falseで返したり、スマートフォンの加速度センサー情報を与えると、持ち 主が歩いているのか否かをtrue/falseで返したりします。 3 training set (トレーニング用のデータ) 機械学習 アルゴリズム 調整済みの hypothesis関数入力 出力 調整済みの hypothesis関数 未調整のhypothesis関数 関数の 入力値 関数の 出力値 機械学習の調整パラメーター regularizationの𝜆など。 入力 出力 入力 入力
  5. 5. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 一般的に3種類の機械学習のカテゴリーがあります  supervised learning (教師あり学習) 学習データを与える際に、正解のデータを一緒に与えるもの。具体的には、ある入力に対 して期待する出力がある場合、そのような入力と出力のペアを学習用のデータとして沢山 用意し、入力と出力の相関をコンピューターに学習させる方式。学習後は、新たな入力値 を与えればコンピューターは適切な出力値を算出してくれる。 Andrew Ng教授の講義で出てきた例:  家賃の予測  スパムフィルター  文字の認識(手書き文字認識、OCRのような活字の認識など)  写真の認識(写真に何が写っているかを判別する。人, 自転車, 車など)  unsupervised learning (教師なし学習) 学習データを与える際に正解のデータを与えないもの。 Andrew Ng教授の講義で出てきた例:  異常検知 (製品の不良の検出、データセンターにおけるマシンの故障、Webシステムの不正利用)  リコメンデーション  購買層をいくつのグループに分けるか (T-シャツを売る際に何通りのサイズ(S,M,L,XLとか)とし、そのサイズは具体的にいくつにするか)  多次元データを人間が理解可能な3次元程度のデータに変換する方法。  reinforcement learning (強化学習) より多くの報酬が得られるように学習していく方式。たとえばゲームのパックマンをクリアする方法を 自己学習するようなプログラムを作ることが出来る。Andrew Ng教授の講義では扱わなかった。 4 加速度センサーなどのセ ンサーデータやカメラの データを扱う際にもよく 用いられます。
  6. 6. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 5 supervised learning linear regression (数値の予測)
  7. 7. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. linear regressionで何をしたいか?  さまざまな情報をもとに、ある数値を言い当てたいという状況が存在します。たとえば以 下の様なものです。  さまざまな情報をもとに、妥当な家賃を決めたい  特定の状況になった時の消費電力を予測したい  加速度センサーの情報などから運動による消費カロリーを予測したい  食べ物の写真からカロリーを概算したい  ダムの水位から、発電量を予測したい  このような時に、linear regressionが使えます。 6
  8. 8. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 家賃を推測しよう!  以下のようなデータがある時、データをプロットしてみると家賃は家の広さが広くなるとそれに比例し て高くなるという傾向が見えたとします。この時、データになるべく沿った直線を引こうとするのです が、どうやってこの直線を引けば良いでしょうか?  データにフィットする直線や曲線などの関数を決める事を「カーブフィッティング」と呼びます。Excel の機能でも、「近似曲線」の機能で提供されています。カーブフィッティングの方法の1つにlinear regression(線形回帰)があります。機械学習向けライブラリーにもそのような機能が提供されています。  機械学習では、𝑦 = 𝑎𝑥 + 𝑏のような関数をデータから決める事を、「データから家賃を予測する関数を学 習する」と表現します。また、この学習の際に用いるデータには答えである家賃のデータが含まれてい るため、「supervised learning(教師あり学習)」であると言います。  家賃の例の場合、𝑦 = 𝑎𝑥 + 𝑏という関数が具体的に決まれば、新しい物件が出てきた際に、その物件の家 の広さ𝑥を関数に代入すると家賃𝑦が求まります。これを機械学習では「家賃が推測出来るようになっ た」と言います。 7 家の広さ (𝑥) 家賃 (𝑦) 21𝑚2 6万円 26𝑚2 6.5万円 30𝑚2 8万円 35𝑚2 9万円 ・・・ ・・・ 家賃 𝑦 家の広さ𝑥(𝑚2 ) 𝑦 = 𝑎𝑥 + 𝑏
  9. 9. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 家賃を家の広さと路線価から推測しよう!  前のスライドでは家の家賃は家の広さだけに比例すると仮定しました。今度は家の広さと路線価から家賃を推測するよう にしてみましょう。この場合、データをプロットすると3次元になります。  𝑦 = 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2のうち、𝜃0, 𝜃1,𝜃2は定数です。前のページと同じように、これらの定数はデータから決める事が可能 です。  ここで用いた𝑥1や𝑥2をまとめて、以下のようにベクトル𝑥を用いた記法を導入します。このようなベクトルをfeature vectorと呼びます。なお、この場合は𝑥0は常に1とします。 𝑥 = 1 家の広さ 路線価 = 𝑥0 𝑥1 𝑥2  𝜃0, 𝜃1,𝜃2のような定数に関しても、今後はベクトル𝜃で表現することにします。なお、𝜃 𝑇 というのは行列の行と列を入れ替 えた形のもので、「シータ・トランスポーズ(transpose)」と読みます。 𝜃 = 𝜃0 𝜃1 𝜃2 𝜃 𝑇 = 𝜃0 𝜃1 𝜃2  このように𝑥や𝜃を記述すると、𝑦 = 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2は以下のようにコンパクトに𝑦 = 𝜃 𝑇 𝑥と記述出来るようになります。 𝑦 = 𝜃0 𝑥0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 = 𝜃0 𝜃1 𝜃2 𝑥0 𝑥1 𝑥2 = 𝜃 𝑇 𝑥 8 家の広さ (𝑥1) 路線価 (𝑥2) 家賃 (𝑦) 21㎡ 21万円/㎡ 6万円 26㎡ 32万円/㎡ 6.5万円 30㎡ 16万円/㎡ 8万円 35㎡ 28万円/㎡ 9万円 ・・・ ・・・ ・・・ 家賃 𝑦 家の広さ𝑥1(𝑚2 ) 𝑦 = 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2
  10. 10. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. もっと沢山の情報から家賃を推測しよう!  実際には、おそらくとても沢山の情報から家賃が決まるはずです。具体的には家の広さや 路線価に加えて、地価、最寄りの駅までの距離、築年数、部屋数などなど、多くの条件に よって家賃は決まりそうです。  このような多くの種類の情報に関しても、linear regressionは扱うことが出来ます。まず、 家賃の予測をするためのデータはすべてfeature vectorとなり、以下のように記述します。 なお、この場合も𝑥0は常に1とします。また、ベクトル𝜃に関しても同様に定義します。 𝑥 = 1 家の広さ 路線価 地価 最寄り駅までの距離 築年数 部屋数 = 𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝜃 = 𝜃0 𝜃1 𝜃2 𝜃3 𝜃4 𝜃5 𝜃6  家賃𝑦が𝑥0~𝑥6に比例すると仮定すると、家賃𝑦を算出する関数はは以下のように𝑦 = 𝜃 𝑇 𝑥と 記述できます。 𝑦 = 𝜃0 𝑥0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 + 𝜃3 𝑥3 + 𝜃4 𝑥4 + 𝜃5 𝑥5 + 𝜃6 𝑥6 = 𝜃 𝑇 𝑥  あとはデータを用いて𝜃0~𝜃6の値を決めれば、この式は家賃の予測に使えるようになりま す。家の広さ、路線価、地価、最寄り駅までの距離、築年数、部屋数を引数に入れれば、 この関数は家賃を算出してくれます。 9
  11. 11. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 家賃が家の広さの2乗に比例している場合は? 10  以下のように、家賃が家の広さの2乗に比例していると思われる場合、どうすれ ばよいでしょうか?  この場合も、以下のように考えれば今までと同じ議論が成り立ちます。このよう に考えれば、結局家賃を予測する式は𝑦 = 𝜃 𝑇 𝑥となります。 𝑥 = 1 家の広さ 家の広さの2乗 = 𝑥0 𝑥1 𝑥2 𝜃 = 𝜃0 𝜃1 𝜃2  あとはデータを用いて𝜃0~𝜃2の値を決めれば、この式は家賃の予測に使えるよう になります。 家賃 𝑦 家の広さ𝑥(𝑚2 ) 𝑦 = 𝜃0 𝑥0 + 𝜃1 𝑥1 + 𝜃2 𝑥1 2
  12. 12. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 家賃が家の広さの1乗2乗3乗4乗5乗に比例している場合は? 11  この場合も以下のように考えれば今までと同じ議論が成り立ちます。結局家賃を予測する 式は𝑦 = 𝜃 𝑇 𝑥となります。 𝑥 = 1 家の広さ 家の広さの2乗 家の広さの3乗 家の広さの4乗 家の広さの5乗 = 𝑥0 𝑥1 𝑥1 2 𝑥1 3 𝑥1 4 𝑥1 5 = 𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝜃 = 𝜃0 𝜃1 𝜃2 𝜃3 𝜃4 𝜃5  あとはデータを用いて𝜃0~𝜃5の値を決めれば、この式は家賃の予測に使えるようになりま す。  このようにより多くの項を入れた式(高い次数の多項式: higher-order polynomial)で家 賃を表現した場合、データに対して非常にフィットした関数が得られます。ただし、やり 過ぎるとデータに含まれるノイズにまで関数がフィットしてしまい、その結果、未知の物 件に対して家賃をうまく言い当てられない関数となっていきます。このような状況を「オ ーバーフィッティング」と呼びます。 家賃 𝑦 家の広さ𝑥(𝑚2 ) オーバー フィッティング
  13. 13. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 家賃がさまざまな情報の変換結果に比例する場合  家賃が、たとえば「家の広さ×路線価」に比例したり、 築年数に比例したりするかもしれ ません。このような場合も、特徴ベクトルにそのような値を採用することで家賃を推測す る式を立てることが出来ます。結局家賃を予測する式は𝑦 = 𝜃 𝑇 𝑥となります。 𝑥 = 1 家の広さ 路線価 地価 最寄り駅までの距離 築年数 部屋数 家の広さ × 路線価 築年数 = 𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 𝑥8 𝜃 = 𝜃0 𝜃1 𝜃2 𝜃3 𝜃4 𝜃5 𝜃6 𝜃7 𝜃8  このような変換を入れれば入れるほど、家賃は込み入った関数として表現でき、関数とし ての表現の自由度が上がります。  関数の表現の自由度が低いものを「high bias」と呼び、関数の表現力が高いものを「low bias」と呼びます。  なお、どこまで特徴ベクトル𝑥の要素数を増やしてよいかですが、おおよそ数百とか数千ま で増やしてもかまいません。 12
  14. 14. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 𝜃をデータから求める方法  ここまで、家賃𝑦を予測するために、𝑦 = 𝜃 𝑇 𝑥という数式で家賃を予測しようとしてきました。𝑥は家賃を 予測する際に使用できそうな複数の情報の羅列で、「feature vector(特徴ベクトル)」と呼ばれるも のでした。𝜃は定数のベクトルであり、データを用いて決めるものでした。  hypothesis関数 𝜃 𝑇 𝑥のように、何かを予測するために使用する関数を「hypothesis関数」と呼び、ℎ 𝜃 𝑥 と記述します。 ℎ 𝜃 𝑥 は、𝜃が決まれば、引数として𝑥を代入することで予測値が決まる関数です。hypothesis関数はline ar regressionの場合は𝜃 𝑇 𝑥という形をしていますが、他のアルゴリズムの場合は別の形をしています。  コスト関数 m個の学習データが与えられた時、そのm個のデータをℎ 𝜃 𝑥 に代入するとm個の予測値が得られます。 この予測値と正解のデータとの誤差を「エラー」と呼びます。(2乗誤差) エラー = 1 2𝑚 𝑖=1 𝑚 ℎ 𝜃 𝑥 𝑖 − 𝑦 𝑖 2 エラーはℎ 𝜃 𝑥 が正解に近い値を出力すればするほど低い値となり、最小値は0です。エラーは𝜃を変え れば変わります。エラーのように、hypothesis関数の良さを見積もる関数を「コスト関数」といい、 𝐽 𝜃 と記述します。なお、オーバーフィッティングを避けるためにコスト関数にはエラーの他にregulari zationという項を追加します。 regularizationの項にある𝜆の値を増減させることで、regularizationの 強さを変えることが出来ます。𝜆を大きくすればするほど、𝜃の要素はゼロに近くしなければコストが大 きくなるといったペナルティがかかる仕組みになっています。 J 𝜃 = 1 2𝑚 𝑖=1 𝑚 ℎ 𝜃 𝑥 𝑖 − 𝑦 𝑖 2 + 𝜆 2𝑚 𝑗=1 𝑚 𝜃𝑗 2  hypothesis関数の𝜃をデータから求める方法 コスト関数𝐽 𝜃 を最小にする𝜃をどうにかして求めれば、与えられたデータに最もフィットする𝜃が得ら れた事になります。𝜃の求め方には色々ありますが、典型的な考え方は次のページで説明します。 13 エラー regularization 注)𝑥 𝑖 や𝑦 𝑖 は𝑖番目の データという意味
  15. 15. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. コスト関数の坂を転がり落ちて、落ち着いた所の𝜽が欲しい情報  コスト関数を最小化する𝜃を求めるためには、ボールが坂を転がり落ちるように、𝜃の値を少しずつ変え ながら動かしていくという方法を使います。一番底に着くと、そこがコスト関数の最小値です。この最 小値を求める方法はたくさんありますが、大抵機械学習のライブラリーがうまくやってくれます。詳細 を知りたい人は、Andrew Ng教授の講義を受講してください。  このようなアルゴリズムでとても有名なものはgradient descentですが、他にも優れたアルゴリズムは 沢山あるようです。conjugate gradient, BFGS, L-BFGSなどです。実装済みのライブラリーもあるよう なので、自分で実装する必要はあまりないそうです。 14 こんな形の𝐽 𝜃 の場合は、 ボールが転がり落ちる先が複数ありま す。転がり落ちた先が最小値とは限り ません。 どっちが低い場所だろう? ボールは一度に「𝛼×傾き」ほど動かします。この𝛼を 「learning rate」と呼びます。傾きが無くなるとボー ルは静止し、そこが答えになります。 𝛼×傾き
  16. 16. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. regularizationの意味と重要性  次数の高い多項式でhypothesis関数を表現した場合、以下のようにデータに対してオーバーフィッティ ングを起こしてしまいます。このようなオーバーフィッティングを抑制するためにあるのがregularizati onです。regularizationは、𝜃0以外の𝜃𝑗の値をゼロに近付ける性質を持ちます。  regularizationの強さを調整するための𝜆の数値をゼロから段々大きくすると、以下の様なフィッティン グの傾向が生まれます。𝜆の調整次第で性能が変わってきますので、実システムでは𝜆の値を自動選択す るようなプログラムを作ります。(単に𝜆の値を順に変えていって、良さそうな𝜆を決めるという方法) 15 家賃 𝑦 家の広さ𝑥(𝑚2 ) 家賃 𝑦 家の広さ𝑥(𝑚2 ) 𝜆=0 家賃 𝑦 家の広さ𝑥(𝑚2 ) 大きすぎる𝜆 家賃 𝑦 家の広さ𝑥(𝑚2 ) 調度良い𝜆 J 𝜃 = 1 2𝑚 𝑖=1 𝑚 ℎ 𝜃 𝑥 𝑖 − 𝑦 𝑖 2 + 𝜆 2𝑚 𝑗=1 𝑚 𝜃𝑗 2 エラー regularization オーバー フィッティング
  17. 17. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 16 supervised learning logistic regression (分類)
  18. 18. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. logistic regressionで何をしたいか? classification problemとmulticlass classification problem  classification problem classification problemとは、与えられたデータをtrueもしくはfalseのどちらかに分類する 問題です。応用例としては以下の様なものがあります。  スパムフィルター e-mailを入力とし、出力としてスパムか否かを判別したい場合(true/false)  病気の判定 血液検査やX線写真などの情報をもとに、ある病気にかかっているか否かを判別したい場合 (true/false)  multiclass classification problem 複数の区分値に分類する場合はmulticlass classification problemと呼びます。応用例とし ては以下の様なものがあります。  手書き文字認識 1文字の手書き文字データをunicodeの1文字に分類したい場合(複数の文字に分類)  ジェスチャー認識 スマートフォンやタブレットの画面上での大雑把な操作や、加速度センサー情報などから、利用者 が行いたいこと(コマンド)を識別したい場合(複数のコマンドに分類)  モーション認識 活動量計がやっているように、加速度センサーの情報を用い、歩いているのか、走っているのか、 自転車に乗っているのか、車に乗っているのか、寝ているのかなどの活動の種類を判別したい場合  画像の認識 示された画像に写っているものが人間なのか、車なのか、自転車なのか、バイクなのかなどをカテ ゴライズするような場合 17
  19. 19. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 良性腫瘍・悪性腫瘍の判定(true/false)  腫瘍が良性腫瘍なのか悪性腫瘍なのかを判別したいときに、過去のデータをプロットしてみると、だいたい腫瘍の大きさ と年齢をもとに区分け出来ると分かったとします。この良性か悪性かの分かれ目をdecision boundaryと呼びます。decisi on boundaryは、この例のように直線であることもありますし、曲線であることもあります。decision boundaryさえ決 められれば、腫瘍の大きさと年齢から良性腫瘍なのか悪性腫瘍なのかをおおよそ判別できるようになるため、この境界を 決めたいとします。  良性腫瘍なのか悪性腫瘍なのかを判別する条件を明確に記述すると、以下のように整理できます。 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 < 0の場合は0 良性 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 ≧ 0の場合は1 悪性  このdecision boundaryもデータから𝜃を求めることで決めることが可能です。  なお、decision boundaryの近くのデータに関しては、それほど強い自信をもって判断できません。一方、decision boun daryから離れているデータに関しては(上記ルール上は)自信を持って判断できます。logistic regressionでは、このよ うな「確からしさ」も算出可能です。「確からしさ」を算出する方法としては、「シグモイド関数」gを使います。 g 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 = 𝑔 𝜃 𝑇 𝑥 = 1 1 + 𝑒−𝜃 𝑇 𝑥  g 𝜃 𝑇 𝑥 は、 𝜃 𝑇 𝑥 = 0 の時(decision boundaryの真上の時)は0.5となります。つまり「0とも1とも言えない」ので0.5です。 𝜃 𝑇 𝑥が0より少し大きくなると小さな正の値となり、それより大きくなるほど1に近づきます。また、𝜃 𝑇 𝑥が0より少し小 さくなると小さな負の値となり、それより小さくなるほど0に近づきます。 18 腫瘍の大きさ𝑥1 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 = 0 もしくは 𝜃 𝑇 𝑥 = 0 良性 悪性 年齢 𝑥 𝟐 シグモイド関数
  20. 20. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 画像の判定(true/false)  文字を1文字、手書きした画像と、その他の画像(風景写真など)を用意し、どちらの種 類の画像なのかを判別したいとします。文字であれば1, 文字でなければ0を出力するとし ます。このような判定も、logistic regressionで可能です。なお、画像はグレースケール (白黒画像)とします。  logistic regressionの特徴ベクトルには、画像のピクセル値をそのまま使用します。たとえ ば20x20ピクセルの画像を対象とする場合は、全部で400ピクセルを扱う必要が有るため、 特徴ベクトルとしては401個の要素があるようなベクトルになります。  あとは𝜃を学習データによって決めれば、画像が手書き文字なのか風景写真などの別の画像 なのかを判別できるようになります。 19 𝑥 = 1 0,0 の位置にあるピクセル値 1,0 の位置にあるピクセル値 2,0 の位置にあるピクセル値 … 19,19 の位置にあるピクセル値 = 𝑥0 𝑥1 𝑥2 𝑥3 … 𝑥400 , 𝜃 = 𝜃0 𝜃1 𝜃2 𝜃3 … 𝜃400 とすると、𝑦 = 1 1 + 𝑒−𝜃 𝑇 𝑥
  21. 21. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 手書き文字の認識(分類)  1~3の数字1文字の手書き文字を数字に変換したいとします。logistic regressionはtrue/falseの2つ に分割するものなので、複数のグループに分類するには工夫が必要です。  複数のグループに分ける際は、one-vs-allという考え方を用います。  これらのdecision boundaryは学習データから決めることが可能です。 decision boundaryが求まれば、新たな手書き文字データを与えた際、「1である確率」や「2である確 率」や「3である確率」がそれぞれいくらかをシグモイド関数によって算出することが出来ます。 たとえばコンピューターが自信を持って「答えは2である」と答える場合、「2である確率」がとても大 きな値として算出されます。コンピューターが自信を持って答えられない場合は、3つとも0に近い値に なります。 20 ピクセル値𝑥1 1 2 ピクセル値𝑥2 3 ピクセル値𝑥1 1 2 ピクセル値𝑥2 3 ピクセル値𝑥1 1 2 ピクセル値𝑥2 3 ピクセル値𝑥1 1 2 ピクセル値𝑥2 3 1とそれ以外 2とそれ以外 3とそれ以外
  22. 22. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. logistic regressionとニューロンとの関係 (logistic regressionは1つのニューロンの処理に相当する)  人の頭の中にある最も基本的な素子は「ニューロン」と呼ばれる神経細胞です。このニューロンの動作 はかなり昔(1943年)から分かっていまして、以下の様なものです。  ニューロンは入力 𝑥1 𝑥2 𝑥3 … 𝑥10000の値それぞれに重み 𝜃1 𝜃2 𝜃3 … 𝜃10000を掛け算し、その 総和が-𝜃0を超えると発火し、𝑦に1を出力します。発火しなかった場合は0を出力します。数式で表現す ると以下のようになります。この数式はlogistic regressionの数式と全く同じです。 𝑦 = 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 + ⋯ + 𝜃10000 𝑥10000 < 0の場合は0 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 + ⋯ + 𝜃10000 𝑥10000 ≧ 0の場合は1  ここで、𝑥や𝜃を以下のようにベクトルで表現すると、もう少し数式を整理できます。(𝑥0 = 1とします) 21 𝑥1 𝑥2 𝑥3 … … 𝑥10000 𝜃1 𝜃2 𝜃3 𝜃10000 𝜃0 yモデル化 𝑦 = 𝜃 𝑇 𝑥 < 0の場合は0 𝜃 𝑇 𝑥 ≧ 0の場合は1 シグモイド関数を使うと 𝑦 = 1 1+𝑒−𝜃 𝑇 𝑥 𝑥 = 𝑥0 𝑥1 𝑥2 𝑥3 … 𝑥10000 , 𝜃 = 𝜃0 𝜃1 𝜃2 𝜃3 … 𝜃10000 とすると、 ヒトのニューロンは大体 1000~10000の入力を 受け付けます https://ja.wikipedia.org/wiki/神経細胞
  23. 23. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. feedforward neural network (フィードフォワードニューラルネットワーク)  logistic regressionでは関数の表現の自由度が不足する場合、非常に関数の表現の自由度が 高いfeedforward neural networkというものが使用できます。feedforward neural networkは、logistic regressionの出力を再度別のlogistic regressionへ入力するようにし たものです。下の図を見ると、one-vs-allを用いたlogistic regressionを拡張したものが feedforward neural networkになっている事が直観的に理解できると思います。 22 𝑥1 𝑥2 𝑥3 𝑥4 𝑦1 𝑦2 𝑦3 𝑥1 𝑥2 𝑥3 𝑥4 𝑦1 𝑦2 𝑦3 feedforward neural network one-vs-allを用いた logistic regression 通常のlogistic regression (1個のニューロンに相当) 𝑥1 𝑥2 𝑥3 𝑥4 𝑦 y = 𝑔 𝜃0 + 𝜃1 𝑥1 + 𝜃2 𝑥2 = 𝑔 𝜃 𝑇 𝑥 = 1 1 + 𝑒−𝜃 𝑇 𝑥 𝑦は0~1の値となる
  24. 24. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. feedforward neural networkの層の数などをどう決めるか  feedforward neural networkを作る際、Andrew Ng教授のお薦めは以下の様なネットワ ークから始めると良いという話でした。 23 𝑥1 𝑥2 𝑥3 𝑥4 𝑦1 𝑦2 𝑦3 feature vectorの 要素数だけ必要 分類先の分類 の種類の数だ け必要 まず、Qの方向の層の数は最初1から始め、 アンダーフィッティングを起こすようだっ たら徐々に層の数を増やすのが良い。 また、Pの方向の数は、feature vectorの数 よりも多くしておく。 層によってPの方向の数を増減させることは 考えなくて良い。 P Q
  25. 25. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 𝜃をデータから求める方法  linear regressionの時と同じく、logistic regressionやfeedforward neural networkでも 以下の様な概念が登場します。  hypothesis関数ℎ 𝜃 𝑥 linear regressionの時はℎ 𝜃 𝑥 = 𝜃 𝑇 𝑥でした。logistic regressionの場合はh 𝜃 𝑥 = 1 1+𝑒−𝜃 𝑇 𝑥 です。また、feedforward neural networkの場合は少し複雑なので数式は書きませんが、 logistic regressionを繋いでいった形として、ℎ 𝜃 𝑥 が定義できます。  コスト関数𝐽 𝜃 linear regressionの時と同じように、logistic regressionやfeedforward neural network でもコスト関数𝐽 𝜃 を定義できます。ただし、数式が複雑なのでここには書きません。  hypothesis関数の𝜃をデータから求める方法 linear regressionの時と同じように、コスト関数𝐽 𝜃 を最小にする𝜃をさまざまなアルゴリ ズムで求めます。特にfeedforward neural networkの場合は、「バックプロパゲーショ ン」という方法でコスト関数𝐽 𝜃 を最小にする𝜃を求めることが出来ます。詳しいバックプ ロパゲーションの解説は、Andrew Ng教授の講義にあります。 24
  26. 26. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 25 実プロジェクトへの適用
  27. 27. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 機械学習システムの開発ステップ  スパムフィルターのような機械学習を用いたシステムを作ろうとした時、 Andrew Ng教授の場合は以下のステップをふむそうです。 1. 汚いソースコードでいいから、手早く最初のプロトタイプをOctaveで作成 する。作成にかける時間は1日程度。 2. プロトタイプの性能や状況を分析。この分析により、データが足りないのか、 特徴ベクトルに特徴が足りないのかなどを判断する。 3. 誤判断となったデータを人の手で分析する。その結果、特徴ベクトルに追加 したほう良い、新たな特徴のアイディアが出てくる。 4. 分析結果や新たなアイディアをもとに、新たなデータを集めたり、プロトタ イプを改善し、再度ステップ2に戻る。 5. プロトタイプで満足する結果が得られたら、JavaやC++などのプログラミ ング言語を用いて本番システムを構築する。  機械学習システムを作る際のポイント  次の1手として何をすれば良いかは自明ではありません。むやみに新たなデ ータを集めても時間の無駄になる可能性があります。よって、プロトタイプ の診断方法がとても重要です。  何か手を打ったとして、その改善が結局のところどれほどシステムのパフォ ーマンスに貢献したかを数値化すべきです。(方法は後述) 26
  28. 28. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. データの使い方  機械学習では、手元にあるデータを3つに分けて使用します。分ける際には、使うデータに 偏りがないよう、最初にシャッフルします。また、データの𝑦値が同じ割合で各グループに 入るようにします。  エラー関数は、出来上がったhypothesis関数がどこまでそれぞれのデータにフィットして いるかを数値として算出するための関数です。完璧にデータにフィットした場合、ゼロに なり、全くフィットしていない場合大きな数値を返します。 27 データ1 データ2 データ3 ... ... ... ... ... ... ... 60% 20% 20% training set cross validation set (cv) test set 𝑥, 𝑦 𝑥が入力され たら𝑦が出て 欲しいという 情報の羅列 𝑥 𝑐𝑣, 𝑦𝑐𝑣 𝑥 𝑡𝑒𝑠𝑡, 𝑦𝑡𝑒𝑠𝑡 呼び方 記法 データの利用目的 hypothesis関数の𝜃 をデータから算出す るために用います。 regularizationの強さを 調整するために利用する。 性能評価のために用い ます。 エラー関数 𝐽𝑡𝑟𝑎𝑖𝑛 𝜃 𝐽𝑐𝑣 𝜃 𝐽𝑡𝑒𝑠𝑡 𝜃 1 2𝑚 𝑖=1 𝑚 ℎ 𝜃 𝑥 𝑖 − 𝑦 𝑖 2
  29. 29. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 機械学習システムの性能改善のために出来ること  機械学習システムの性能改善のために出来ることはおおよそ決まっていて、以下のどれか です。スパムフィルターを例に、どのようなことをするかを具体的に紹介します。  この中で、特に下2つはデータ収集の作業となるため、やるとなると数ヶ月単位で作業時間 がかかります。本当にこのアクションが改善に繋がるのか、ある程度確信を持った上で実 施したいでしょう。どうやってこの判断をすればよいのか、以降のスライドで説明します。 28 性能改善のための アクション 作業量 スパムフィルターの場合 hypothesis関数の表現の自由 度を上げ下げしてみる (詳細は次ページ) 軽微 ニューラルネットワークの層の数を増減してみる。 linear regressionやlogistic regression の場合は多項式の次数を増減してみる。 regularizationを強く効かせ たり弱く効かせたりしてみる 軽微 regularizationを調整することでもデータに対するアンダー フィッティングやオーバーフィッティングを防止できます。 より多くのデータを入手する 大変 スパムフィルターの場合は、典型的には「ハニーポット」 プロジェクトと呼ばれる方法でデータを入手する。つまり、 スパム収集のためのアカウントを作成し、そこに来たスパ ムをデータとして利用する。 特徴ベクトルに新たな特徴を 追加する 大変 メールの場合、メールのヘッダー情報を特徴ベクトルとし て入れてみたり、綴り間違えの数を特徴ベクトルに入れて みたりする。アイディアはさまざま。
  30. 30. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. hypothesis関数の表現の自由度とは  hypothesis関数の表現の自由度は、以下のように自在に変えられます。現状のプロトタイ プがhigh biasなのかlow biasなのかを診断できると、使用しているhypothesis関数に自信 を持つことが出来ます。 29 𝑥1 𝑥2 𝑥3 𝑥4 𝑦1 𝑦2 𝑦3 𝑥1 𝑥2 𝑥3 𝑥4 𝑦1 𝑦2 𝑦3 表現の自由度が低い (high bias) 表現の自由度が高い (low bias) 𝑥 = 𝑥0 𝑥1 1 𝑥1 2 𝑥1 3 𝑥1 4 = 𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 , 𝜃 = 𝜃0 𝜃1 𝜃2 𝜃3 𝜃4 𝑦 = 𝜃 𝑇 𝑥 linear regressionや logistic regression の場合 feedforward neural network の場合 𝑥 = 𝑥0 𝑥1 = 𝑥0 𝑥1 , 𝜃 = 𝜃0 𝜃1 𝑦 = 𝜃 𝑇 𝑥
  31. 31. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. hypothesis関数の表現の自由度が十分か否かを判定する方法  現状のプロトタイプがhigh biasなのかlow biasなのかを診断するには、同じデータを用い てhigh biasなhypothesis関数からlow biasなhypothesis関数まで変化させ、エラーがどの ように推移するかを見ます。  このようなプロットをしてみると、hypothesis関数はhigh bias過ぎてもlow bias過ぎても 良くないことが分かります。調度良いhypothesis関数を探す必要があります。これを探す には、このようなプロットをした後に目視で確認するか、調度よい所を自動で探すプログ ラムを作ります。 30 エラー high bias hypothesis関数 low bias hypothesis関数 𝐽𝑡𝑟𝑎𝑖𝑛 𝜃 𝐽𝑐𝑣 𝜃 high biasではtraining setに もcross validation setにも フィットしない。 low biasではtraining setに かなり忠実にフィットする。 low biasではtraining setにオー バーフィットしすぎ、cross valid ation setにはフィットしない。 調度良いところ
  32. 32. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. regularizationの調整がうまく行っているかを確認する方法  現状のプロトタイプのregularizationがうまく調整できているか否かを確認することも重要 です。  hypothesis関数の調整と同じで、regularizationの強さも大きすぎても小さすぎても良くあ りません。調度良い適切な値を見つける必要があります。この調整の方法としてはプログ ラム的に探す事が多いのですが、安心のため、上記のようなプロットもしてみるとより安 心できます。なお、ニューラルネットワークの場合は層の数を多めにしたものを固定的に 使い、regularizationの強さでこのような調整を行う事が多いそうです。 31 エラー 大きなλ 小さなλ 𝐽𝑡𝑟𝑎𝑖𝑛 𝜃 𝐽𝑐𝑣 𝜃 大きなλを用いるとtraining s etにもcross validation set にもフィットしない。 小さなλを用いるとtraining setに かなり忠実にフィットする。 小さなλを用いるとtraining setにオ ーバーフィットしすぎ、cross valid ation setにはフィットしない。 調度良いところ
  33. 33. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. データの数を増やせば良いのか、新たなfeatureを追加するのが良いのか を判定する方法(新たなfeatureを追加すれば良い場合)  新たなデータを入手することは、場合によっては非常に大変な労力がかかる作業です。新 たなデータを入手することで、現状のプロトタイプの性能が上がるのか否か、判断できる と便利です。そのための方法として、learning curveを描いてみるという方法があります。 [データを増やしても性能が改善しない状況]  このような状況を改善するには、以下の手が考えられます。  feature vectorに新たなfeatureを追加する。  もっとlow biasなhypothesis関数を使用する。  regularizationを弱くする。 32 エラー データの数 𝐽𝑡𝑟𝑎𝑖𝑛 𝜃 𝐽𝑐𝑣 𝜃 少ない数のtraining setには完全にフィ ット可能 少ない数のtraining set で学習しても、未知の データをうまく予測で きない これ以上データを増 やしても性能が上が らない この2つに関しては、先の ページにあるように、きち んと調整されていれば問題 は起こさない
  34. 34. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. データの数を増やせば良いのか、新たなfeatureを追加するのが良いのか を判定する方法(データを増やせば良い場合)  [データを増やせば性能が改善する状況]  この状況を改善するには、以下の手が考えられます。  データの量を増やす。  もっとhigh biasなhypothesis関数を使用する。  regularizationを強くする。 33 エラー データの数 𝐽𝑡𝑟𝑎𝑖𝑛 𝜃 𝐽𝑐𝑣 𝜃 少ない数のtraining setには完全にフィ ット可能 少ない数のtraining set で学習しても、未知の データをうまく予測で きない まだギャップがあり、 データを増やせば性 能が上がる ギャップ この2つに関しては、先の ページにあるように、きち んと調整されていれば問題 は起こさない
  35. 35. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. プロトタイプの性能を簡単に評価するには𝑭 𝟏スコアを用いる  プロトタイプの性能を簡単に評価するためには、𝐹1スコアと呼ばれるスコア値を用いる事 がよくあります。このスコア値が以前よりも高ければ、プロトタイプの性能は上がったと みなして良いですし、低くなれば性能は下がったと考えて良くなります。このような性能 評価を用いると、性能を上げるためのさまざまな試行錯誤の中で良い指標となります。  𝐹1スコアの計算方法 𝐹1 𝑆𝑐𝑜𝑟𝑒 = 2 𝑃 ∗ 𝑅 𝑃 + 𝑅  P(precision:精度)とR(recall:再現率)の定義 チェック用のデータ(cross validation setやtest set)に対し、以下のA,B,C,Dの分類をしま す。この分類の結果、それぞれのグループの個数を数え、PやRの計算を行います。 なお、この計算をする際には、レアケースである場合をAとして考えます。  スパムが来るのがレアケースである場合、ℎ 𝜃 𝑥 が常に0を返すような関数であっても、ス パムフィルターの性能が高いという評価になりかねません。F1スコアを用いると、𝐴 = 0, 𝐵 = 0となるので、𝑃は計算不能、𝑅 = 0となり、𝐹1スコアとしては評価不能となります。 34 1 0 1 true positive (A) false positive (B) 0 false negative (C) true negative (D) データ上の𝑦値 ℎ𝜃𝑥の計算結果 𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛(精度) = 𝐴 𝐴 + 𝐵 𝑅𝑒𝑐𝑎𝑙𝑙(再現率) = 𝐴 𝐴 + 𝐶 エラーメッセージ例: The sum of true positives and false positives are equal to zero for some labels. Precision is ill defined for those labels.
  36. 36. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 使用する学習アルゴリズムの優劣より 学習データの量が性能の決め手になる  2001年にMichele BankoとEric Brillが出した論文によると、複数の異なる学習アルゴリズ ムを用いてある機械学習の問題のベンチマークをしてみると、学習アルゴリズムの違いよ りも、使用する学習データの量が性能の決め手になることが分かり、機械学習の世界では 「最も多くのデータを持っている者が勝者になる」と言われています。この洞察により、 「ビッグデータ」の重要性が理解され、様々な企業がより多くのデータを集めたがってい ます。 35 http://ucrel.lancs.ac.uk/acl/P/P01/P01-1005.pdf 性能の高さ 学習データの量 "It's not who has the best algori thm that wins. It's who has the most data." (注) この後に活発に研究されたdeep neur al network (DNN) により、実際には 「アルゴリズムの違いなんて関係ない」 という部分が崩れています。 今は、DNNかそれ以外かで性能が かなり違うという状況になっています。
  37. 37. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 巨大データを持っている場合の必勝法  まずは「low bias algorithm」を用いることが前提になります。「low bias algorithm」とは、関数の 表現の自由度が高い機械学習アルゴリズムです。具体的には多数の項を追加したlinear regressionを使 用したり、沢山の層を導入したfeedforward neural networkです。これらはどんなデータにもフィット 可能な柔軟性を持ちます。典型的には層をたくさん持つfeedforward neural networkを使います。  feedforward neural networkのような「low bias algorithm」を用いれば、非常に高い表現の自由度が あるため、表現形式がボトルネックになることはありません。「low bias algorithm」は、データが少 ない状況ではデータに対しておかしなフィットの仕方をします。しかし、巨大データがあれば、こんな 心配も無くなります。簡単に非常に性能の高いものを得ることが可能です。 36 𝑥1 𝑥2 𝑥3 𝑥4 𝑦1 𝑦2 𝑦3 𝑦 𝑥 データが少ない時 𝑦 𝑥 巨大なデータさえあれば 𝑥 = 𝑥0 𝑥1 1 𝑥1 2 𝑥1 3 𝑥1 4 = 𝑥0 𝑥1 𝑥2 𝑥3 𝑥4 , 𝜃 = 𝜃0 𝜃1 𝜃2 𝜃3 𝜃4 , 𝑦 = 𝜃 𝑇 𝑥 higher degree polynomial 層をたくさん持つ feedforward neural network
  38. 38. ULS Copyright © 2015 UL Systems, Inc. All rights reserved.  OCRソフトを作るプロジェクトでは、以下のようにいくつかのステップで全体が動作します。このよう に複数の機械学習が組み合わされたものをmachine learning pipelineと呼びます。 1. テキストエリアの検出 2. テキストエリアを1文字1エリアへ分割 3. 1文字の画像を1文字のデータに分類  このような複雑なシステムを開発するためには、各ステップごとに機械学習の開発チームを割り振り、 それぞれの担当ステップの精度が上がるように努力します。  なお、このような多段の処理が必要なシステムの場合、最終的なOCRの認識率というのは全ステップの 総合評価が結果としてあらわれます。machine learning pipelineのうちどのステップが認識率のボトル ネックになっているか調査するためには、次ページで説明する「ceiling analysis」を行います。 実プロジェクトにおけるサブシステム分割の例(OCRソフトを題材に) 37 入力データ例(画像) →"R"
  39. 39. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. ceiling analysis  ceiling analysisとは、machine learning pipelineの中の各ステップを、機械の代わりに人 間が処理した場合、どこまで性能が上がっていくかを見る手法です。ほぼ完璧な認識率を 誇る人間が各ステップを処理することで、どのステップを改善することが全体の改善に繋 がるのかを判断できます。  この例では、テキストエリアの検出の際に、人間レベルの完璧な仕事が機械にできた場合、 全体の認識率は9%向上することが分かります。逆に、テキストエリアを1文字1エリアに分 割するステップを人間レベルの精度に引き上げたとしても、たった1%の性能向上しか見 込めないことになります。よって、何に注力すべきかがこれでよく分かります。  なお、このような分析は、一般的なシステムの性能向上においても使える手法です。シス テムが複数の処理ステップが組み合わさっている時、各ステップを理想的な状態になった と仮定してみて、全体性能がどこまで上がりそうかを見ると、良い示唆が得られます。 38 テスト1 テスト2 テスト3 テスト4 テキストエリアの 検出 機械 人間 人間 人間 テキストエリアを 1文字1エリアへ分割 機械 機械 人間 人間 1文字の画像を 1文字のデータに分類 機械 機械 機械 人間 全体の認識率 85% 94% 95% 100% 9%の改善 1%の改善 5%の改善
  40. 40. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 39 unsupervised learning principal component analysis (PCA:主成分分析)
  41. 41. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. PCAを使ったdimensionality reductionの方法  PCA(主成分分析)は、機械学習ではfeature vectorの次元を下げる時に使えるアルゴリズム です。次元を下げるとはどういった意味かを説明します。  上の図のように、𝑥1, 𝑥2, 𝑥3の3次元からなる空間があるとして、その中にデータがプロット されているとします。よくよく見ると、データはある平面上にしか存在していません。こ のような場合、新しく軸を2つほど作り、この2つの軸ですべてのデータを表現し直すこ とが可能です。このようにすると、3次元空間だった空間を2次元空間へ変えることが出 来ています。次元が減ったということになります。  次元を下げた表現のデータ、元の次元に復元することも可能です。(可逆変換)  上の図のように完璧に新たな次元の空間にすべてのデータを引っ越しできるとは限りませ ん。次元を下げるにしたがい、通常は元のデータがいくらか欠損していきます。どこまで 次元を下げると、どこまでデータが欠損するかも算出することが可能です。 40 𝑥1 𝑥3
  42. 42. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. PCAの便利な使い方  その1:機械学習システムのスピードを上げる方法として PCAを用いてfeature vectorの次元圧縮をすると、feature vectorの次元が下がることで機 械学習システム全体の動作スピードが上がります。ただし、次元を下げ過ぎると重要なデ ータの特徴まで消してしまい、ちゃんと機械が判断出来なくなってしまうため、注意が必 要です。  その2:多次元データを可視化する方法として 人間は4次元以上の空間を認識できません。どうしても2次元空間か3次元空間に次元を 落とさないとデータを可視化出来ないということになってしまいます。このデータの可視 化のために、無理やりPCAを用いて2次元空間などにデータを落とし込み、データを可視 化する方法があります。 41
  43. 43. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. 42 unsupervised learning anomaly detection (異常検知)
  44. 44. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. anomaly detectionの概要  出荷する製品の品質的な異常や、エンジンの不調、データセンターにおけるマシンの異常、 ネットワークの異常、カード決済の不審な操作など、「いつもと違う」事を検出したい場 合があります。このような事を検出する方法がanomaly detectionと呼ばれるものです。  anomaly detectionでは、feature vectorをガウス分布にフィッティングします。これによ り、「いつものfeature vectorはどんなものか」を決めます。なお、以下の図は3次元です が、実際にはfeature vectorはもっと高い次元であることが多いため、これの多次元版のイ メージになります。  何を正常とし、何を異常とするかは、この𝜀の値次第です。𝜀の値を上げれば、より多くの 状況で異常と判断されますし、𝜀の値を下げれば、非常に異常な状態でのみ異常と判断され ます。 43 𝑥1 𝑥2 𝜀より上は正常、 𝜀より下なら異常 この高さを𝜀とする
  45. 45. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. おわりに  今回、Andrew Ng教授の授業で取り上げられた内容の中で、色々説明できなかったトピッ クがあります。およそ受講に2ヶ月かかる講義を2時間で紹介することは難しいです。扱う ことが出来なかった主なトピックを以下に列挙します。これらについて内容を知りたい場 合は、ぜひAndrew Ng教授の講義を受講して頂ければと思います。  k-meansによるクラスタリング  support vector machine  back propagationの中身  リコメンドシステム  大規模データを扱う方法や、人工的に学習データを増やす方法  各種の詳細な内容  最新の機械学習の世界はこの講義内容から離れ、どんどん進んでいます。この講義は Andrew Ng教授によって、おおよそ2008年頃に作成されたコンテンツなのですが、その後、 2010年あたりからdeep neural networkと呼ばれる技術革新が広く認識されました。 Andrew Ng自身、deep neural networkにフォーカスした研究を行うようになり、deep neural networkの世界での有名人にもなっています。 最近のAI関連のニュースで目にする成果は、どちらかというとdeep neural networkに関 するニュースの方が多く含まれるようになっています。このような事情で、この講義内容 は「最新の内容」というわけではなくなっています。機会があれば、次回はdeep neural networkにフォーカスした勉強会を開催したいと思います。 44
  46. 46. ULS Copyright © 2015 UL Systems, Inc. All rights reserved. おまけ:deep neural networkで、いま出来ることの例  音声認識:今のGoogleの音声認識がそうです。  画像認識:既存の機械学習よりも非常に高い精度で 何が写っているかを認識することが出来ます。  イメージ・キャプショニング: 示された画像に対して、その画像に対する短い説明をさまざまな言語で生成できます。 Long Short Term Memory (LSTM) recurrent neural networkという技術で実現できます。 例)http://www.ted.com/talks/fei_fei_li_how_we_re_teaching_computers_to_understand_pictures  文章の作成: 簡単なものであれば文章を生成することが可能です。このような文章の自動生成は、AP通信などが既に 使用しています。recurrent neural networkを使ったものがよく知られています。  人間とのチャット: マニュアルを覚えて適切な助言をチャットを通じて人間に与えたり、世間話をしたりする事が可能です。 (例:http://arxiv.org/pdf/1506.05869.pdf) このような事も、Long Short Term Memory (LSTM) recurrent neural networkという技術で実現で きます。以下はチャットの例です。 45 http://googleresearch.blogspot.jp/2014/09/buil ding-deeper-understanding-of-images.html 例)

×