機械学習(AM)は独自の名前を形成しており、AMはデータマイニング、自然言語処理、画像、エキスパートシステムなど、さまざまな重要なアプリケーションで重要な役割を果たすことができるという認識が高まっています。 AMは、これらすべてのドメインなどで可能なソリューションを提供します。それはまた、私たちの将来の文明の柱となるように作られています。
の補足 スキルAMのデザイナー まだ需要がありません。これの大部分は、AMが複雑だからです。このチュートリアルでは、機械学習理論の基本を紹介し、一般的なトピックと概念を説明して、ロジックをたどり、トピックに慣れることを容易にします。
では、「機械学習」とは正確には何ですか? AMは確かに たくさんの もの。この分野は非常に広大で急速に拡大しており、絶えず細分化され、絶え間なく細分化されており、 機械学習の種類 。
ただし、基本的な共通の分母があり、支配的なテーマは、1959年にアーサーサミュエルによって行われたこの頻繁に引用される声明によって最もよく要約されます。 「[機械学習は]明示的にプログラムされていなくてもコンピューターが学習できるようにする研究分野です。」
そして最近では、1997年に トムミッチェル エンジニアリングタイプに最も役立つことが証明されている「よく考えられた」定義を示しました。 「コンピュータプログラムは、あるタスクTとあるパフォーマンス測定値Pに関して、経験Eから学習し、経験Eとともに向上すると言われています。」
「コンピュータプログラムは、あるタスクTとパフォーマンスPの測定値に関して、経験Eから学習し、Pで測定したTでのパフォーマンスが経験Eで向上する場合、経験Eで向上すると言われています。」 -カーネギーメロン大学トムミッチェルしたがって、たとえば、混雑した交差点でのトラフィックパターン(T検定)をプログラムで予測する場合は、機械学習アルゴリズムを使用して、古いトラフィックパターン(エクスペリエンスE)のデータを使用して、プログラムを台無しにすることができます。正常に「学習」した場合、将来のトラフィックパターンを予測するためのより良い仕事をします(パフォーマンス測定P)。
多くの現実の問題の非常に複雑な性質は、一般に、毎回完全にそれらを解決する特殊なアルゴリズムを発明することは非現実的であり、不可能でさえあることを意味します。機械学習の問題の例としては、次のものがあります。 「これはガンですか?」 、 「この家の時価はいくらですか?」 、 「これらの人々のどれが良い友達ですか?」 、 「このロケットエンジンは離陸時に爆発しますか?」 、 「この人はこの映画が好きですか?」 、 「彼/彼女は誰ですか?」 、 '何って言ったの?' 、Y 「どうやってこれを飛ばすの?」 。これらの問題はすべてAMプロジェクトの優れた焦点であり、実際、AMはそれぞれに適用されて大きな成功を収めています。
AMは数値的手段だけでは解決できない問題を解決します。さまざまなタイプのAMタスクの中で、教師あり学習と教師なし学習の間に決定的な違いがあります。
まず、教師あり学習に焦点を当てますが、記事の最後には、教師なし学習に関する簡単な説明と、このトピックを継続することに関心のある人のためのリンクが含まれています。
ほとんどの教師あり学習アプリケーションでは、達成したいことは、十分に洗練された予測関数を作成することですh(x)
(「仮説」と呼ばれることもあります)。 「学習」は、数学的アルゴリズムを使用してこの関数を最適化することで構成され、データを与えることによってx
特定のドメイン(たとえば、家の平方フィート)で、興味深い値を正確に予測しますh(x)
(たとえば、その家の市場価格)。
実際には、x
ほとんどの場合、複数のデータポイントを表します。したがって、たとえば、住宅価格予測担当者は、平方フィート(x1
)だけでなく、寝室の数(x2
)、浴室の数(x3
)、階数も取得できます。 (x4)
、建設年数(x5
)、郵便番号(x6
)など。使用する入力を決定することは、AM設計の重要な部分です。説明から、1つの入力値のみが使用されていると想定する方が簡単です。
単純な予測子が次の形式であるとしましょう。
どこ Y
それらは一定です。私たちの目標は、の完璧な価値を見つけることです
Y
予測機能を可能な限り機能させます。
予測子を最適化するh(x)
使用しなくなりました トレーニング例 。トレーニングの例ごとに、入力値x_train
があります。これにより、対応する出力が事前にわかっていますy
。各例について、既知の正しい値y
と予測値h(x_train)
の違いを見つけます。十分なトレーニング例があれば、これらの違いはh(x)
の「間違った」を測定するための便利な方法を提供します。次に、少し変更できますh(x)
の値を変更することによって Y
それを「間違いを少なくする」ために。このプロセスは、システムが最適な値と一致するまで何度も繰り返されます
Y
。このようにして、予測者は訓練を受け、実際の予測を行う準備ができています。
この投稿では、説明のために問題を単純にしていますが、AMが存在する理由は、実際には問題がはるかに複雑だからです。このフラットスクリーンでは、最大1セットの3次元データを描画できますが、AMの問題は通常、数百万の次元と非常に複雑な予測関数を持つデータを扱います。 AMは数値的手段だけでは解決できない問題を解決します。
それを念頭に置いて、簡単な例を見てみましょう。次のトレーニングデータがあり、会社の従業員が1から100のスケールで満足度を評価したとします。
まず、データに多少のノイズがあることがわかります。これは、パターンはあるものの(賃金が上がると従業員満足度が上がる傾向がある)、すべてが一直線に収まるわけではないためです。これは常に実際のデータに当てはまります(そして私たちは間違いなく実際のデータでマシンをトレーニングしたいと思っています!)。では、従業員の満足度を完全に予測するようにマシンをトレーニングするにはどうすればよいでしょうか。真実は私たちができないということです。 MAの目標は、「完璧」を推測することではありません。MAは、そのようなものがないドメインを扱うからです。目標は、有用であるために十分に良い予測を行うことです。
ここで、英国の数学者と統計学教授の有名な声明を思い出すことができます ジョージE.P.ボックス 「すべてのモデルが間違っていますが、いくつかは便利です」と書かれています。
MAの目標は、「完璧」を推測することではありません。MAは、そのようなものがないドメインを扱うからです。目標は、有用であるために十分に良い予測を行うことです。AMは統計に大きく依存しています。たとえば、学習するためにマシンをトレーニングする場合、トレーニングデータとして統計的に有意なランダムサンプルをマシンに与える必要があります。トレーニングセットがランダムでない場合、マシンが実際にはサンプルにないパターンを学習する可能性があります。トレーニングセットが非常に小さい場合( 大数の法則 )、私たちは多くを知らず、決定的な結果を得る可能性があります。たとえば、マネージャーからのみデータを収集して会社全体の満足度パターンを予測しようとすると、多くのエラーが発生する可能性があります。
これを知って、今度はあなたが学ぶためにあなたが上で私たちに与えたデータを私たちのマシンに与えます。まず、予測子を初期化する必要がありますh(x)
の公正価値 そして
。これで、トレーニングセットにあるとき、予測子は次のようになります。
この予測子に60,000ドルを稼ぐ従業員の満足度を尋ねると、27のインデックスが表示されます。
明らかに、これは非常に悪い予測であり、このマシンはまだ多くを知らないことがわかります。
それでは、この予測子を与えましょう みんな トレーニングセットの給与について、予測された満足度の結果と対応する従業員の実際の満足度の評価の違いを比較します。少し数学の魔法をかけると(次に説明します)、13.12の値を非常に確実に計算できます および0.61
それは私たちにより良い予測を与えるでしょう。
このプロセスを、たとえば約1500回繰り返すと、予測子は次のようになります。
この時点でプロセスを繰り返すと、次のことがわかります。 Y
推定量に変化はなく、システムが収束していることがわかります。私たちが間違っていなければ、それは私たちが最適な予測子を見つけたことを意味します。ここで、6万ドルを稼ぐ従業員の満足度をもう一度マシンに尋ねると、プラスマイナス60の割合が予測されます。
今、私たちはどこかに行きます。
上記の例は、技術的には次のような単純な問題です。 一変量線形回帰 、これは簡単な方程式を導出することで解くことができるため、「調整」プロセス全体をスキップします。それでも、次のような予測子について少し考えてみてください。
この関数は4次元の入力データを受け取り、さまざまな多項式項を持ちます。この関数の正規方程式を導出することは大きな課題です。最近の機械学習の問題の多くは、数千、さらには数百万のデータの次元を考慮して、数百の係数を使用して予測を作成します。生物のゲノムがどのように発現するか、または50年後の気候がどのようになるかを予測することは、これらの複雑な問題のいくつかの例です。
最近のAMの問題の多くは、数千、さらには数百万のデータディメンションを考慮して、数百の係数を使用して予測を作成します。幸いなことに、AMシステムが採用する反復アプローチは、そのような複雑さに関してははるかに回復力があります。力ずくの代わりに、機械学習システムは答えが見つかるまで「すべてを感じます」。大きな問題の場合、これははるかにうまく機能します。これは、AMが任意の複雑な問題を解決できる(できない)という意味ではありませんが、非常に効率的で柔軟なツールであることを意味します。
この反復プロセスがどのように機能するかを詳しく見てみましょう。上記の例では、どのようにして Y
それらは改善していて悪化していませんか?その答えは、すでに述べた「エラーの測定」と少しの計算にあります。
エラー測定は次のように定義されます。 コスト関数 (つまり、 損失関数 )、 。入り口
予測子で使用するすべての係数を表します。この場合、
実際にはペアです
Y
。
これにより、与えられた値を使用したときに予測子がどれほど間違っているかを数学的に測定できます
Y
。
コスト関数オプションは、AMプログラムのもう1つの重要な部分です。さまざまな状況で、「間違っている」とはさまざまな意味を持ちます。従業員満足度の例では、確立された基準は 最小二乗関数 :
最小二乗法では、悪い推測に対するペナルティは、推測と正解の間で2次関数的に上昇するため、エラーの非常に「厳密な」尺度として機能します。コスト関数は、すべてのトレーニング例の平均ペナルティを格納します。
私たちの目標は見つけることです Y
予測子の場合
h(x)
そして、そのコスト関数 できるだけ小さくしてください。これを達成するために、私たちは計算の力に頼ります。
特定のAM問題のコスト関数の次のグラフを検討してください。
ここでは、の値に関連するコストを確認できます Y
。グラフがややお椀型になっていることがわかります。ボウルの下部は、提供されたトレーニングデータに基づいて予測子が計算できる最低のコストを表しています。目標は「丘を下って」見つけて見つけることです
Y
この点に対応します。
cプログラミング言語の使用
これが、この機械学習チュートリアルの微積分の出番です。説明を簡単にするために、方程式を書くつもりはありませんが、基本的に私たちが行うことは、 、の導関数のペアです
(1つ
と1つについて
)。グラデーションは、の値が異なるごとに異なります。
Y
、そしてこの特定の「丘の斜面」、特に「それが下がっている場所」とは何かを教えてくれます
s。たとえば、現在の値を入力すると
グラデーションで、少し追加するように教えてください
少し差し引く
コスト関数のフロアの方向に私たちを連れて行きます。だから私たちは少し追加します
、そして私たちはから少し減算します
、そしてvoilà!学習アルゴリズムの一部が終了しました。更新された予測子、h(x)=
+
xは、以前よりも優れた予測を提供します。私たちのマシンは少しスマートになりました。
現在の勾配の計算と更新を交互に行うこのプロセス 結果のsは、勾配降下法または 最急降下法 。
これには、ほとんどの教師あり機械学習システムが表す基本的な基礎理論が含まれます。ただし、基本的な概念は、問題に応じてさまざまな方法で使用できます。
監視ありMAには、2つの重要なサブカテゴリがあります。
そして、根底にある理論は多かれ少なかれ同じであることがわかります。最大の違いは、予測子の設計ですh(x)
とコスト関数の設計 。
これまでの例では回帰問題に焦点を当ててきたので、次に分類の例を見てみましょう。
これは、Cookie品質テストの調査結果です。このテストでは、トレーニング例に青の「良いCookie」(y = 1
)または赤の「悪いCookie」(y = 0
)のラベルが付けられています。
分類では、回帰予測子はあまり役に立ちません。通常、必要なのは0から1の間の仮定を行う予測子です。Cookieの品質評価では、1の予測は、Cookieが優れていて非常においしいという非常に自信のある仮定を表します。 0の予測は、CookieがCookie業界にとって恥ずかしいことであるという大きな自信を表しています。この範囲の値は不確実性が低いことを表すため、0.6の予測が「ねえ、それは難しい呼び出しですが、はい、あなたはそのクッキーを売ることができます」を意味するようにシステムを設計できますが、値はちょうど真ん中の0.5は、全体的な不確実性を表す可能性があります。これは、分類子で信頼が割り当てられる方法であるとは限りませんが、かなり一般的な設計であり、図を説明するために機能します。
この振る舞いを非常にうまく捉える素晴らしい機能があります。それはと呼ばれています シグモイド関数 、g(z)
、次のようになります。
z
は、次のような入力データと係数の表現です。
したがって、予測子は次のようになります。
シグモイド関数が出力を0から1の範囲に変換することがわかります。
コスト関数の設計ロジックも分類が異なります。繰り返しますが、仮定が間違っているとはどういう意味ですか?今回の非常に良い経験則は、正しい推測が0で、1と言った場合、完全に間違っていた、またはその逆であるということです。そして、あなたは間違いよりも間違っているはずがないので、この場合のペナルティは莫大です。ここで、正しい仮定が0で、0と言った場合、コスト関数はこれが発生するたびにコストを追加するべきではありません。仮定が正しいが、それが正しいかどうか完全に確信が持てない場合(たとえば、y = 1
、ただしh(x) = 0.8
)、これには少額の費用がかかるはずです。仮定が正しくないが、確信が持てない場合(例:y = 1
しかしh(x) = 0.3
)、これにはかなりのコストがかかるはずですが、完全に間違っている場合ほどではありません。
この動作は、次のようなロギング機能によってキャプチャされます。
繰り返しますが、コスト関数 すべてのトレーニング例の平均コストがわかります。
したがって、ここでは、予測子h(x)
およびコスト関数 回帰と分類は異なりますが、最急降下法は同じように機能します。
分類予測子は、境界線を引くことで視覚化できます。たとえば、予測が「はい」(0.5より大きい予測)から「いいえ」(0.5未満の予測)に変化するバリア。適切に設計されたシステムを使用すると、Cookieデータは次のような境界線を生成できます。
これで、Cookieについて1つか2つのことを知っているマシンになりました。
AMの議論は、少なくとも ニューラルネットワーク 。これらは、困難な問題を解決するための非常に強力なツールを提供するだけでなく、私たちの脳がどのように機能するかについての手がかりを提供し、いつの日かインテリジェントなマシンを作成するための興味深い可能性を提供します。
ニューラルネットワークは、入力が膨大な機械学習の問題に最適です。このような問題を処理するための計算コストは、上記で説明したタイプのシステムにとって非常に圧倒的です。しかし、ニューラルネットワークは、原理的に最急降下法と非常によく似た手法を使用して効果的に調整できることがわかりました。
ニューラルネットワークの明示的な説明は、この記事の情報を超えていますが、私たちの 前の投稿 それは主題を扱っています。
教師なし学習は通常、データ間の関係を見つけるために割り当てられます。このプロセスで使用されるトレーニング例はありません。代わりに、システムには一連のデータが与えられ、その中のパターンと相関関係を探すタスクが課せられます。良い例は、ソーシャルメディアデータで親しい友人のグループを特定することです。
これを実現するために使用されるアルゴリズムは、教師あり学習に使用されるアルゴリズムとは大きく異なり、トピックは独自の記事に値します。ただし、当面の間は、[アルゴリズムクラスタリング](https://en.wikipedia.org/wiki/Cluster_analysis)をそのままチェックしてください。 k-means 、およびチェック 次元削減 のようなシステム 主成分分析 。私たちの[ビッグデータ投稿](https://www.toptal.com/big-data#hiring-guide)では、これらのトピックの多くについて詳しく説明しています。
機械学習の分野の基礎となる基本理論のほとんどをカバーしましたが、もちろん、表面をかじっただけです。
この概要の理論を実際の機械学習の例に適用するには、ここで説明するトピックをより深く理解する必要があることに注意してください。 AMには多くの微妙な点や障害があり、微調整された思考マシンのように見えるもののおかげで、回避する方法はたくさんあります。基本理論のほとんどすべての部分は、さまざまな方法で変更または操作することができ、その結果はしばしば魅力的です。多くは、特定の問題により適した新しい研究分野になります。
もちろん、機械学習は非常に強力なツールです。今後数年間で、それは私たちの最も差し迫った問題のいくつかを解決するのを助けるだけでなく、新しい機会の世界を開くことを約束します。ザ・ AMエンジニアの需要 それは成長し続け、特別な何かの一部となる素晴らしい機会を提供します。アクションに参加することを検討してください。
この記事は、スタンフォード大学の教授である 博士アンドリュー・ン その中で オープンで無料の機械学習コース 。このコースでは、この記事で説明するすべてのことをより深くカバーし、AM実践者に多くの実用的なヒントを提供します。この魅力的な分野をさらに探求したい方には、このコースを強くお勧めします。