コンピューターの主なタスクの1つは、人間のタスクを自動化することです。これらのタスクの一部は、「XをAからBに移動する」など、単純で反復的なものです。コンピュータが形式化するのがはるかに難しい問題について決定を下さなければならないとき、それははるかに興味深いものになります。ここから、基本的な機械学習の問題に直面し始めます。
歴史的に、そのようなアルゴリズムは、その分野についての深い知識を持ち、主にルールに基づいていた科学者または専門家によって構築されました。計算能力の爆発的増加と大規模で多様なデータセットの可用性により、焦点はより計算的なアプローチにシフトしました。
最も人気のある 機械学習 最近の概念はニューラルネットワークと関係があり、私の経験では、これはニューラルネットワークがすべての推論問題に対するある種の奇跡の武器であるという印象を多くの人々に生み出しました。実際、これは真実からかなりかけ離れています。統計学者の目には、それらは関連する長所と短所を備えた1つのクラスの推論アプローチを形成し、ニューラルネットワークが最良の解決策になるかどうかは問題に完全に依存します。
多くの場合、より良いアプローチがあります。
この記事では、機械学習の問題を攻撃するための構造の概要を説明します。についてあまり詳細に入る余地はありません 特定の機械学習モデル 、しかし、この記事が興味を引く場合、後続の記事はいくつかの興味深い機械学習の問題に対する詳細な解決策を提供する可能性があります。
ただし、最初に、自動的に考えるよりも慎重にならなければならない理由を示すために、少し努力しましょう。 神経網 」機械学習の問題に直面したとき。
ニューラルネットワークでは、推論は加重された「ネットワーク」を介して行われます。重みは、いわゆる「学習」プロセス中に調整され、その後、入力に結果を割り当てるために適用されます。
これは単純に聞こえるかもしれませんが、すべての重みはキャリブレーションされたネットワークのパラメーターであり、通常、人間が理解するにはパラメーターが多すぎることを意味します。
したがって、ニューラルネットワークを、特定のモデルを間に挟まずに、入力を出力に接続するある種の推論ブラックボックスと見なす方がよいでしょう。
このアプローチの長所と短所を詳しく見てみましょう。
成功したニューラルネットワークの例: Googleの AIが惑星を見つけた 蓄積された望遠鏡データを分析することにより、NASAが行っていない遠方の星を周回します。
失敗の例: 個人的な関係から、航空写真で軍用車両の検出に取り組んでいる大企業(名前は付けられません)について教えてもらいました。彼らはそのような車両とそうでない他の車両があるところのイメージを持っていました。前者の画像のほとんどは雨の日に撮影されたもので、後者は晴天時に撮影されたものです。その結果、システムは光と影を区別することを学びました。
要約すると、ニューラルネットワークは長所と短所を持つ1つのクラスの推論方法を形成します。
それらの人気が一般の人々の目には他のすべての統計手法よりも優れているという事実は、他の何よりもコーポレートガバナンスに関係している可能性があります。
標準ツールと標準化されたニューラルネットワーク手法を使用するように人々をトレーニングすることは、さまざまな分野の専門家やアーティストを探すよりもはるかに予測可能なプロセスです。ただし、これは、単純で明確な問題にニューラルネットワークを使用することが、実際には大砲でスズメを撃つだけであるという事実を変えるものではありません。大量のデータが必要であり、多くの注釈作業が必要であり、その見返りとしてソリッドモデルと比較すると、パフォーマンスが低下します。最高のパッケージではありません。
それでも、彼らが統計的知識を「民主化」するという事実には大きな力があります。ニューラルネットワークベースの推論ソリューションを単なるプログラミングツールと見なすと、複雑なアルゴリズムに慣れていない人でも役立つ可能性があります。そのため、必然的に、洗練されたモデルでしか操作できなかった場合には存在しなかった多くのものが構築されています。
機械学習の問題に取り組む場合、次の手順を実行する必要があります。
これらの項目を詳しく見ていきましょう。
可能な限り、できるだけ早く目標の精度を把握する必要があります。これがあなたが目指す目標になるでしょう。
これは最も重要なステップです。まず第一に、データにエラーがない(またはほとんどない)必要があります。これらを浄化することは、重要な最初のステップです。欠落している値を置き換え、明らかに偽のパターンを特定し、重複やその他の異常に気付く可能性のあるものを排除します。
情報に関しては、データが(線形の意味で)非常に有益である場合、実質的にどのような推論方法でも良い結果が得られます。必要な情報がそこにない場合、結果はノイズになります。情報を最大化するということは、主にデータ内の有用な非線形関係を見つけて線形化することを意味します。それが入力を大幅に改善するなら、素晴らしい。そうでない場合は、さらに変数を追加する必要があります。これらすべてが成果を上げない場合、ターゲットの精度が低下する可能性があります。
運が良ければ、便利な単一の変数があります。たとえば、学習対象の変数に対してそれらをプロットし、プロットが関数のようであることがわかった場合(つまり、入力の狭い範囲が出力の狭い範囲に対応する)、有用な変数を特定できます。次に、この変数を線形化できます。たとえば、放物線としてプロットする場合は、いくつかの値を減算して平方根を取ります。
ノイズの多い変数(入力の狭い範囲が出力の広い範囲に対応する)の場合、他の変数と組み合わせてみることができます。
精度を把握するには、変数ごとに条件付きクラスの確率を測定するか(分類問題の場合)、線形回帰などの非常に単純な形式の回帰を適用する(予測問題の場合)ことができます。入力の情報量が改善されると、推論も改善されます。データの準備ができていないときにモデルを調整するこの段階で、あまり多くの時間を無駄にしたくないだけです。したがって、テストはできるだけ簡単にしてください。
データが適切な形になったら、推論方法を使用できます(必要に応じて、データは後で洗練される可能性があります)。
モデルを使用する必要がありますか?さて、あなたがそのタスクのための良いモデルを構築できると信じる正当な理由があるなら、あなたはおそらくそうすべきです。そうは思わないが、適切な注釈が付いた十分なデータがある場合は、ニューラルネットワークを使用してハンズフリーにすることができます。ただし、実際の機械学習アプリケーションでは、そのための十分なデータがないことがよくあります。
プレーの正確さ対カバーはしばしば途方もなく報われる。ハイブリッドアプローチは通常完全に問題ありません。単純なモデルを使用して、80%でほぼ100%の精度を得ることができるようなデータであると仮定しますか?つまり、実証可能な結果をすばやく得ることができ、システムが80%の友好的な領域でいつ動作しているかを識別できれば、基本的に問題のほとんどをカバーできています。あなたのクライアントはまだ完全に満足していないかもしれませんが、これはあなたに彼らの信頼をすぐに得るでしょう。そして、残りのデータに対して同様のことを行うことを妨げるものは何もありません。合理的な努力で、たとえば、データの92%を97%の精度でカバーできるようになりました。確かに、残りのデータでは、それはコイントスですが、あなたはすでに何か有用なものを生み出しています。
ほとんどの実用的なアプリケーションでは、これは非常に便利です。たとえば、あなたは融資事業に従事していて、誰に融資を行うかを決定したいと考えています。知っているのは、クライアントの70%でアルゴリズムが非常に正確であるということだけです。すばらしい—確かに、他の30%の申請者はより多くの処理を必要としますが、70%は完全に自動化できます。または:コールセンターのオペレーターの作業を自動化しようとしている場合、最も単純なタスクでのみ適切な(迅速で汚い)仕事を行うことができますが、これらのタスクは通話の50%をカバーしますか?コールセンターは、通話の50%を確実に自動化できれば、コストを節約できます。
総括する: データが十分に有益でない場合、または問題が複雑すぎて全体を処理できない場合は、枠にとらわれずに考えてください。より良いアイデアが得られるまで、有用で解決しやすいサブ問題を特定します。
システムの準備ができたら、満足のいく結果が得られるまで、システムを学習、テスト、ループします。
前の手順の後、関心はほとんど残っていません。データがあり、機械学習方法があるので、学習によってパラメーターを抽出し、テストセットで推論をテストします。文献によると、記録の70%はトレーニングに使用し、30%はテストに使用する必要があります。
結果に満足できれば、タスクは終了です。しかし、おそらく、あなたは手順の間にいくつかの新しいアイデアを開発しました、そしてこれらはあなたが正確さを向上させるのを助けるかもしれません。おそらくもっとデータが必要ですか?それとももっとデータクレンジング?または別のモデル?いずれにせよ、あなたはかなり長い間忙しいでしょう。
だから、頑張って、これからの仕事を楽しんでください!
関連:機械学習にはすべての推論手法が含まれますが、深層学習はデータ内の意味のある非線形関係を明らかにすることを目的としています。したがって、深層学習は機械学習のサブセットであり、機械学習の問題に適用される自動化された機能エンジニアリングの手段でもあります。
知覚組織の6つの法則
理想的な選択は、幅広いプログラミングライブラリをサポートし、インフラストラクチャではなく数学に集中できる言語です。最も人気のある言語はPythonですが、MatlabやRなどのアルゴリズム言語、またはC ++やJavaなどのメインストリーマーもすべて有効な選択肢です。
ニューラルネットワークは、上記の長所と短所を備えた機械学習内の1つのアプローチにすぎません。
いくつかの良いオンラインコースと要約ページがあります。それはすべて自分のスキルと好みに依存します。私の個人的なアドバイス:機械学習を統計プログラミングと考えてください。数学を強化し、機械学習とニューラルネットワークを同一視するすべてのソースを避けてください。
いくつかの利点:数学、機能エンジニアリング、または職人のスキルは必要ありません。トレーニングが簡単。当初は考慮されていなかった問題の側面を明らかにする可能性があります。いくつかの欠点:比較的多くのデータが必要です。面倒な準備作業。なぜ彼らが彼らのやり方を決定するのかについての説明を残さず、過剰適合します。