機械学習愛好家必読ガイド

機械学習愛好家必読ガイド

[[273182]]

このガイドは、機械学習 (ML) に興味があるが、どこから始めればよいかわからない人向けです。

私たちの目標は、誰にでも理解できるようにすることです。つまり、テキストには概要が多数含まれることになります。しかし、誰が気にするでしょうか?機械学習に興味を持っていただける方が増えれば嬉しいです。

機械学習とは何ですか?

機械学習の考え方は、問題に固有のカスタム コードを記述する必要なく、汎用アルゴリズムを使用してデータ セットに関する興味深い情報を提供することです。コードを書くのではなく、汎用アルゴリズムにデータを入力すると、そのデータに基づいて独自のロジックが構築されます。

たとえば、アルゴリズムの 1 つは分類アルゴリズムです。データをさまざまなグループに分類できます。手書きの数字を認識するために使用できる同じ分類アルゴリズムを使用して、コードを 1 行も変更せずに電子メールをスパムと非スパムに分類することもできます。同じアルゴリズムを使用しても、異なるトレーニング データを入力すると、分類ロジックが異なります。

この機械学習アルゴリズムは、さまざまな分類問題に使用できるブラックボックスです。

「機械学習」は、これらの一般的なアルゴリズムの多くを網羅する包括的な用語です。

2つの機械学習アルゴリズム

機械学習アルゴリズムは、教師あり学習と教師なし学習という 2 つの主要なカテゴリに分けられます。この区別は単純ですが、非常に重要です。

教師あり学習

あなたが不動産業者だとしましょう。あなたのビジネスは成長しているので、あなたはあなたを助けてくれる新しいインターンのグループを雇います。しかし、問題があります。物件を見るだけでその価格を大体見積もることができますが、インターン生にはあなたのような経験がないので、価格の決め方が分からないのです。

インターン生を助けるために(そしておそらくあなた自身も休暇を取るために)、あなたは、家の広さや近隣地域などに基づいて、あなたの地域の家の価格や、同様の家の売却価格を見積もる小さなアプリケーションを書くことにしました。

したがって、あなたの市内で誰かが家を売るたびに、その記録を 3 か月間保存する必要があります。それぞれの家について、寝室の数、面積、近隣地域など、多くの詳細を記録する必要があります。しかし、最も重要なのは、最終的な販売価格を記録することです。

これが私たちの「トレーニングデータ」です。

このトレーニング データを使用して、エリア内の他の住宅の価格を推定できるプログラムを作成します。

トレーニングデータを使用して他の住宅の価格を予測したいと考えています。

これは教師あり学習です。それぞれの家がいくらで売れたかがわかります。言い換えれば、質問の答えがわかっており、そこから逆算することができます。

アプリケーションを構築するには、各住宅のトレーニング データを機械学習アルゴリズムに取り込む必要があります。アルゴリズムは、数値を計算するためにどのような計算を行う必要があるかを判断しようとします。

これは数学のテストの答えと同じですが、演算が消去されています。

賢い生徒が先生の答えから数学記号を消しました!

このことから、試験の数学の問題が何であるかを推測できますか?右側の各答えを得るためには、左側の数字をどう「処理」すればよいかを知っておく必要があります。

教師あり学習では、この関係をコンピューターに計算させます。この特定の問題セットを解くのに必要な数学がわかれば、同じタイプの問題にはすべて答えることができます。

教師なし学習

元の不動産業者の例に戻りましょう。各住宅の販売価格がわからない場合はどうすればいいでしょうか?各家の大きさや場所などしかわかっていない場合でも、本当にクールなことを行うことができます。これは教師なし学習です。

未知の数値(価格など)を予測したくない場合でも、機械学習を使えば興味深いことを行うことができます。

それは、誰かがあなたに数字のリストが書かれた紙を渡して、「これらの数字が何を意味するのかはよく分かりませんが、パターンやグループ化などがあるかどうかはわかるかもしれません。頑張ってください!」と言うようなものです。

では、このデータを使って何ができるのでしょうか?まず、アルゴリズムを使用して、データ内のさまざまな市場セグメントを自動的に識別できます。地元の大学の近くの購入者は寝室がたくさんある小さめの家が本当に好きなのに、郊外の購入者は広い面積の 3 寝室の家を好むということに気づくかもしれません。これらのさまざまなタイプの顧客を理解することは、マーケティング活動を導くのに役立ちます。

もう一つの便利な機能は、他の場所とは異なる住居を自動的に識別することです。おそらく、外れ値の住宅は高級物件であり、その地域に最も優秀な営業担当者を集中させると、より大きな手数料を支払える可能性がある。

この記事の残りの部分では教師あり学習に焦点を当てますが、それは教師なし学習がそれほど有用でなかったり、興味深くなかったりするからではありません。実際、アルゴリズムの向上に伴い、データに正しい答えのラベルを付ける必要がなくなるため、教師なし学習の重要性はますます高まっています。

補足: 機械学習アルゴリズムには他にも多くの種類がありますが、これは良いスタートになります。

それは素晴らしいことですが、住宅価格を見積もることができることは本当に「学習」と言えるのでしょうか?

人間の脳は、ほとんどあらゆる状況に対処でき、明示的な指示がなくてもその状況に対処する方法を学習します。長い間住宅を販売していれば、住宅の適正価格、住宅を販売する最良の方法、住宅に興味を持つ顧客のタイプなどを本能的に「感知」できるようになります。強力な人工知能研究の目標は、コンピューターを使用してこの能力を再現できるようにすることです。

しかし、現在の機械学習アルゴリズムは十分ではなく、非常に具体的かつ限定された問題に焦点を当てた場合にのみ機能します。この文脈では、「学習」のより良い定義は、「いくつかのサンプルデータが与えられた場合に、特定の問題を解決するための公式を見つけること」かもしれません。

残念ながら、「いくつかのサンプルデータに基づいて特定の問題を解決するために方程式を計算するマシン」というのは、あまり良い名前ではありません。そのため、私たちはそれを「機械学習」と呼ぶことになります。

もちろん、50 年後にこの記事を読んで、強い AI のアルゴリズムが解明されていたら、この記事は少し古風に思えるでしょう。

このプログラムを書いてみましょう!

では、上記の例にある家の価格を見積もるプログラムはどのように記述するのでしょうか?さらに読み進める前に、次の点を考慮してください。

機械学習について何も知らない場合は、次のように住宅価格を見積もるための基本的なルールをいくつか書いてみるかもしれません。

  1. def estimate_house_sales_price(寝室数、平方フィート、近隣地域):  
  2. 価格= 0    
  3. # 私の地域では、平均的な住宅の価格は1平方フィートあたり200ドルです 
  4. 1平方フィートあたりの価格= 200    
  5. 近所== "hipsterton" の場合:  
  6. # ただし、一部の地域では料金が少し高くなります 
  7. 1平方フィートあたりの価格= 400    
  8. elif近所== "スキッドロウ":  
  9. # 一部の地域では料金が安くなります 
  10. 平方フィートあたりの価格= 100    
  11. # 場所の広さに基づいて基本価格を見積もることから始めます 
  12. 価格=平方フィートあたりの価格* 平方フィート 
  13. # 寝室の数に基づいて見積りを調整します 
  14. 寝室数== 0 の場合:  
  15. # ワンルームマンションは安い 
  16. 価格価格= 価格 — 20000  
  17. それ以外:  
  18. # 寝室数が多い場所は通常 
  19. # より価値がある 
  20. 価格価格= 価格 + (ベッドルーム数 * 1000)  
  21. 返品価格

数時間かけて調査すれば、何か役に立つものが見つかるかもしれません。しかし、プログラムが完璧になることは決してなく、価格が変化すると維持するのが難しくなります。

コンピューターがこれをやってくれたらもっといいと思いませんか?関数が実際に何を行うかは、正しい数値を返す限り、誰も気にしません。

  1. def estimate_house_sales_price(寝室数、平方フィート、近隣地域):  
  2. 価格= <コンピュータ、ちょっと計算してください>    
  3. 返品価格

これについて考える一つの方法は、価格を、寝室の数、床面積、近隣地域を材料とするおいしいシチューと考えることです。各成分が最終価格にどの程度影響するかを把握できれば、各成分が最終価格に占める割合を正確に把握できる可能性があります。

これにより、元の関数 (複雑な if 関数や else 関数を含む) が次のように簡略化されます。

  1. def estimate_house_sales_price(寝室数、平方フィート、近隣地域):  
  2. 価格= 0    
  3. # これを少し 
  4. 価格 += ベッドルーム数 * .841231951398213  
  5. # そしてそれをひとつまみ 
  6. 価格 += 平方フィート * 1231.1231231  
  7. # たぶんこれ一握り 
  8. 価格 += 近隣 * 2.3242341421  
  9. # そして最後に、適度な塩を少し加えます 
  10. 価格 += 201.23432095  
  11. 返品価格

マジックナンバーに注意してください: .841231951398213、1231.1231231、2.3242341421、および 201.23432095。これが私たちの体重です。各住宅に適用する最適な重みを計算できれば、関数で住宅価格を予測できるようになります。

最適な重みを計算する愚かな方法は次のとおりです。

ステップ1:

それぞれの初期重みを 1.0 に設定します。

  1. def estimate_house_sales_price(寝室数、平方フィート、近隣地域):  
  2. 価格= 0    
  3. # これを少し 
  4. 価格 += ベッドルーム数 * 1.0  
  5. # そしてそれをひとつまみ 
  6. 価格 += 平方フィート * 1.0  
  7. # たぶんこれ一握り 
  8. 価格 += 近隣 * 1.0  
  9. # そして最後に、適度な塩を少し加えます 
  10. 価格 += 1.0  
  11. 返品価格

ステップ2:

知っている各住宅を関数に通して、関数が各住宅の正しい価格をどれだけ正確に予測できるかを確認します。

関数を使用して各住宅の価格を予測します

たとえば、最初の家が実際には 250,000 ドルで売れたが、関数が 178,000 ドルで売れると予測した場合、家は 72,000 ドル安く売れたことになります。

次に、データセット内の各住宅の販売価格の二乗差を合計します。データセットに 500 件の販売があると仮定すると、関数は各住宅の販売価格の二乗差の合計を 86,123,373 ドルと計算します。現在の関数はそれほど「間違っている」のです。

次に、その合計を 500 で割って、住宅 1 軒あたりの平均価格差を算出します。この平均誤差は関数のコストと呼ばれます。

重みを調整してこのコストをゼロにすることができれば、関数は完璧です。つまり、どの場合でも、関数は入力データに基づいて家の価格を完璧に推測できることになります。さまざまな重量値を試してコストをできるだけ低くすることが私たちの目標です。

ステップ3:

可能な重みの組み合わせごとに手順 2 を繰り返します。最後に、コストがゼロに最も近づく重みの組み合わせが選択されます。適切な重量が見つかれば、問題は解決です!

ブレインストーミングの時間

とても簡単ですよね?今やったことを思い出してください。いくつかのデータを取得し、それを 3 つの一般的な非常にシンプルな手順に入力すると、その地域のあらゆる住宅の価格を予測できる関数が作成されます。

しかし、ここであなたを驚かせるかもしれない事実がいくつかあります。

過去 40 年間にわたる多くの分野 (言語学や翻訳など) での研究では、「デジタル シチューをかき混ぜる」(これは私が作った言葉です) 汎用学習アルゴリズムによって、実際の人間が実現しようとする明示的なルールベースのアプローチを実現できることが示されています。機械学習の「愚かな」アプローチは、最終的には人間の専門家に勝ちます。

結果として得られる関数は完全に愚かです。 「平方フィート数」や「寝室数」が何なのかさえ知りません。わかっているのは、正しい答えを得るにはいくつかの数字を足し合わせる必要があるということだけです。

特定の重みのセットがなぜそのように機能するのか、おそらくまったくわからないでしょう。つまり、実際には理解していないが、動作することが証明できる関数を作成したことになります。

「平方フィート」や「寝室数」などのパラメータを取る代わりに、予測関数が数値の配列を取ると想像してください。

各数字が、車の上に取り付けられたカメラで撮影された画像内のピクセルの明るさを表しているとします。ここで、関数が「価格」という予測を出力する代わりに、ホイールを回転させるための「度数」という予測を出力すると仮定します。車を自動運転できる機能ができましたね!

かなりクレイジーですよね?

ステップ 3 の「すべての重量番号を試す」とはどういう意味ですか?

もちろん、すべての可能な重量の組み合わせを試して、最も効果的な組み合わせを見つけることは不可能です。すべての数字を使い切ることはできないため、これには非常に長い時間がかかります。

これを避けるために、数学者は、あまり多くの試行をせずに適切な重量値をすばやく見つけるための多くの巧妙な方法を考え出しました。方法は次のとおりです。

まず、上記のステップ 2 を表す簡単な方程式を作成します。

これがコスト関数です。

では、まったく同じ方程式を、機械学習の数学の専門用語を使って書き直してみましょう (今は無視してください)。

θ は現在の重量を表し、J(θ) は現在の重量のコストを表します。

この式は、現在設定されている重みによって価格推定関数がどれだけ間違っているかを表します。

numberofbedrooms と sqft のコスト関数の重みのすべての可能な値をプロットすると、次のようなグラフが得られます。

コスト関数のグラフはボウルのように見えます。縦軸はコストを表します。

この図では、最も低い青い点がコストが最も低い点、つまり関数のエラー値が最小の点です。最高点は、エラー値が大きくなる点です。したがって、このグラフの最も低い点の重量を見つけることができれば、答えが得られます。

したがって、このグラフの最低点まで「坂​​を下る」ように重みを調整するだけで済みます。常に最低点に向かって重量を少しずつ調整し続けると、多くの重量を試さなくても最終的に最低点に到達します。

微積分を覚えているなら、関数の微分を取るとその点における接線の傾きが得られることを覚えているでしょう。言い換えれば、曲線上のどの点でも下り坂の方向がどちらであるかがわかります。この知識を使って下り坂を進むことができます。

したがって、各重みに関してコスト関数の偏微分を計算すると、この値を各重みから減算できます。これで山のふもとに一歩近づくことになります。これを続けると、最終的に丘の底に到達し、重量の最適な値を見つけることができます。 (理解できなくても心配しないで、読み続けてください)。

これは、バッチ勾配降下法と呼ばれる関数の最適な重みを見つける方法の概要です。機械学習ライブラリを使用して現実世界の問題を解決する場合、これらの計算はすべて自動的に実行されます。しかし、何が起こっているのかをよく理解しておくことは依然として役に立ちます。

他に何がスキップされましたか?

私が説明した 3 段階のアルゴリズムは、多変量線形回帰と呼ばれます。世帯のすべてのデータポイントを通る線の方程式を推定します。次に、この方程式を使用して、家がライン上のどこに位置するかに基づいて、これまで見たことのない家の販売価格を予測します。これは、「実際の」問題を解決するために使用できる非常に便利なアイデアです。

私が示したアプローチは単純なケースでは機能しますが、すべてのケースで機能するわけではありません。理由の 1 つは、住宅価格が必ずしも連続した線をたどるほど単純ではないことです。

しかし幸いなことに、この問題を解決する方法があります。非線形データを処理できる機械学習アルゴリズムは他にも多数あります (ニューラル ネットワークやカーネルを使用したサポート ベクター マシン (SVM) など)。線形回帰をより巧妙に使用して、より複雑な線を当てはめることができる方法もあります。いずれの場合も、最適な重みを見つけるという基本的な考え方は依然として当てはまります。

また、オーバーフィッティングの概念も無視しました。簡単な例としては、元のデータセット内の住宅の価格を常に非常に正確に予測するが、元のデータセットにない新しい住宅に対しては実際には機能しない重みのセットが挙げられます。これに対処する方法はいくつかあります (正規化やクロス検証データセットの使用など)。これに対処する方法を学ぶことは、機械学習をうまく適用する方法を学ぶ上で重要な部分です。

つまり、基本的な概念は非常にシンプルですが、機械学習を適用して有用な結果を得るには、ある程度のスキルと経験が必要です。しかし、これはどんな開発者でも習得できるスキルです。

機械学習には魔法があるのでしょうか?

機械学習の技術が、一見解決困難な問題(手書き認識など)にいかに簡単に適用できるかがわかってくると、答えを得るのに十分なデータがあれば、機械学習を使用してあらゆる問題を解決できるという感覚が得られ始めます。データを入力するだけで、コンピューターが魔法のようにそれに合った方程式を導き出します。

しかし、機械学習が機能するのは、すでに利用可能なデータで実際に問題を解決できる場合のみであることを覚えておくことが重要です。

たとえば、各住宅の鉢植えの種類に基づいて住宅価格を予測するモデルを構築しても、そのモデルは決して機能しません。各住宅の鉢植えの数と住宅の販売価格の間には相関関係はなかった。したがって、コンピューターはどれだけ努力しても、両者の関係を推測することはできません。

関係が実際に存在するモデルのみをモデル化できます。したがって、人間の専門家がこのデータを使って手動でこの問題を解決できない場合は、コンピューターでもおそらく解決できないということを覚えておいてください。私たちは人間が解決できる問題にもっと焦点を当てるべきであり、コンピューターがそれらをより速く解決できれば素晴らしいでしょう。

機械学習についてさらに学ぶにはどうすればいいですか?

私の意見では、現時点で機械学習の最大の問題は、それが主に学術界と商業研究グループの世界に存在していることです。専門家にならずに機械学習を幅広く理解したい人にとって、アクセスしやすい資料はあまりありません。しかし、私たちは毎日進歩しています。

もっと深く学びたい場合は、Coursera の Andrew Ng による無料の機械学習コースがおすすめです。強くお勧めします。コンピュータサイエンスの学位を持ち、数学を少し覚えている人なら誰でもアクセスできるはずです。

<<:  AIと機械学習がデータセンターにどのように役立つか

>>:  米シンクタンクの報告書:中国のAI人材流出、大半が米国へ

ブログ    
ブログ    

推薦する

...

20年後、AIはデータセンターアーキテクチャを再び分裂に引きずり込むのでしょうか?

Alpha GO が人間の囲碁プレイヤーに勝利して以来、AI はビジネス界全体で最もホットな用語に...

オブジェクトストレージがAIと機械学習に適している3つの理由

[[328561]]今日、あらゆるタイプの企業が人工知能や機械学習のプロジェクトに取り組んでいますが...

エッジインテリジェンス: リアルタイムのデータ処理とインテリジェントな意思決定を実現する新世代のテクノロジー

ラボガイドエッジインテリジェンスは、人工知能 (AI) とエッジコンピューティングを組み合わせた新し...

10回!マイクロソフトは、1000億のパラメータをトレーニングできる史上最大のNLGモデルをオープンソース化しました。

AI の最新の傾向は、自然言語モデルが大きくなるほど精度が向上するということですが、コスト、時間、...

「思考スタンプ」が実現!中国とアメリカの科学者33人の最新の成果:光を使って脳の認知を変える

[[404075]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...

人工知能時代の罠を回避し、実装を実現する方法

つい最近、カリフォルニア大学バークレー校で活躍している、インターネットで有名な無人食品配達車「Kiw...

一枚のポートレートからビデオを生成しましょう!中国チームが3D顔動画生成モデルを提案、SOTAを達成

[[417461]]人間の顔を使って面白いビデオを生成するにはどうすればいいでしょうか? [[417...

顔認証でお金を引き出すのは安全ですか?

広州市のある商業銀行は最近、顔認証引き出し機能を備えたATMを導入し、利用者が銀行カードを持っていな...

AIと自動化革命に備える10の方法

人工知能と自動化はもはやSFの世界の話ではなく、ビジネスの世界と消費者の世界の両方で非常に現実的かつ...

クアルコム:米国は自動運転技術の標準化で中国に遅れをとる可能性

[[272354]]画像: この Uber の自動運転車は、米国サンフランシスコでテスト中に信号待ち...

ハッカーが、さまざまなネットワーク攻撃コードを自動生成できる悪質なAIツールFraudGPTを公開

7月31日、「ハッカーがAIを使って犯罪ツールを作る」という研究者の懸念が徐々に現実のものとなりつつ...

トイレに座ってアルゴリズムを見る: クイックソート

高速かつ経済的なソートアルゴリズムスペースを無駄にせず、より高速なソートアルゴリズムはありますか?そ...

...