コラムの概要
このコラムでは、機械学習を始める際のブロガーの学習体験談を紹介しますので、私の学習体験から何かを得られれば幸いです。不正確なところや抜けがあるかもしれませんが、ご容赦ください!
このコラムを準備する際、ブロガーは読者が一定の Python/プログラミングの基礎を持っていることを前提としています。また、このコラムでは、読者が機械学習に関するある程度の基本的な知識 (いくつかの基本的な語彙の定義など) を持っていることを前提としています。
機械学習/機械学習/ML とは何ですか?
以下は、機械学習の父であるトム・ミッチェルが教科書「機械学習」で与えた定義への参照です。
コンピューター プログラムは、そのパフォーマンス ( P によって測定される)が経験 Eによって向上する場合、あるクラスのタスクTに関して経験 E とパフォーマンス測定 P から学習するといわれます。
簡単に言うと、機械学習は、経験によって継続的に改善できるアルゴリズムの設計と開発に関係します。すべての機械学習 (以下、ML) アルゴリズムは、少なくとも 3 つの部分で構成されます。
任务/Task。
タスクとは、アルゴリズムが達成したい目標を指します。たとえば、顔認識アルゴリズムのタスクは、視覚信号から人間の顔の特徴を正確かつ迅速に識別して分類することです。性能/Performance。
パフォーマンスとは、アルゴリズムの有効性を示す何らかの尺度を指します。ほとんどの機械学習アルゴリズムは、アルゴリズムがトレーニングされているかどうかを決定するために精度を使用します。经验/Experience。
経験とは、アルゴリズムが学習に使用できるものを指します。単純なアルゴリズムの場合、外部から提供される静的データベースを学習の対象にすることができます。より複雑なアルゴリズム (強化学習/強化学習など) の場合、そのエクスペリエンスはトレーニング オブジェクト自体によって生成および収集されます。
ML が他の従来のコンピューター分野と異なるのは、ML アルゴリズムが 1 つであることです黑箱模型/Black-box model
。私たちが自分でコードを書くときは、通常、コードを書きます白箱模型/White-box model
。つまり、自分で書いたモデル/アルゴリズムと入力データを使用して出力を生成します。ただし、ML アルゴリズムとの違いは、ML アルゴリズムに入力データと出力データを与えると、アルゴリズムがデータに基づいてデータに適合するモデルを生成することです。このようにして、人間が容易に理解できない多くのプロセス (顔認識など) を、データによってもたらされる経験を通じて機械が高いレベルで学習し、理解することができます。
機械学習プロセス
完全な ML アプリケーションの開発には、通常、次のプロセスがあります。
确定任务/Problem Definition。
このステップでは、ML アルゴリズムのタスク/Task が何であるかを明確にし、どのモデル/性能評価指標/データ型が最も効果的かを判断する必要があります。私たち人間は归纳偏置/Inductive bias
問題の性質について主観的に選択と仮定を行う必要があるため、このステップは非常に重要です。自動運転車などの複雑な問題の場合、特定の帰納的バイアス (深さ 3 層のランダム フォレストが最適なモデルであると考えるなど) が重大な結果をもたらす可能性があります。获取数据/Data Ingestion。
このステップでは、モデルのトレーニングに使用されるデータを取得する必要があります。データを取得するには通常 2 つの方法があります。1 つ目は自分で取得する方法 (湿度と温度を毎日測定するなど)、2 つ目は他の人のデータを取得する方法です (最も一般的で簡単なソースは Kaggle です)。データには通常、特征/Features
と の2 つの部分が含まれます标签/Labels
。フィーチャは、モデルが受け取る入力 (画像など) を表します。ラベルは、この写真の動物の名前など、モデルの予想される出力を表します。预处理数据/Data Preparation。
意味のないデータや不完全なデータに遭遇することは避けられません。現時点では、それらを削除するか、別の方法で完了するかを検討する必要があります。データをより充実させるために、いくつかの特徴エンジニアリングを実行することもできます。分离数据/Data Segregation。
場合によっては、どのデータをトレーニングに使用するか、どのデータをモデルのパフォーマンスの評価に使用するかを決定する必要があります。モデルが では训练集/Training Set
高い精度を達成できるが、 では测试集/Test Set
低い精度を達成できる場合、过拟合/Overfitting
アルゴリズムがトレーニング データの特性を過剰に理解しており、目に見えないデータではパフォーマンスが低下していると考えられます。逆に、モデルの の训练集/Training Set
精度が低いものの、の精度が高い場合、モデルにはトレーニング データの特性を十分に把握する時間がなかったと测试集/Test Set
言えます。欠拟合/Underfitting
训练模型/Model Training。
多くの場合、モデルのトレーニングは何度も繰り返す必要があり、異なるモデルのパフォーマンスを達成するために異なるハイパーパラメーターが選択されます。このステップも比較的時間がかかり、計算量が多くなります。评估性能/Candidate Model Evaluation。
最適なモデルを選択するには、モデルのパフォーマンスを常に監視する必要があります。应用模型/Model Deployment。
トレーニングされたモデルをパッケージ化してアプリケーションに埋め込み、テストのために公開します。持续监测性能/Performance Monitoring。
モデルのパフォーマンスは、リリース後に受信したデータを使用して再トレーニングおよび改善できます。
多くの場合、より適切なモデルを見つけるには、ステップ 3 ~ 6 を何度も繰り返す必要があります。これらのステップは帰納的バイアスに大きく依存するため、最も適切なモデル、スーパーパラメータ、データを厳密かつ正確に決定することは不可能であるため、「錬金術」というあだ名が付けられています。錬金炉)では、ダン(モデル)の良し悪し(性能)は、取り出して見る(性能評価)ことでしか分からず、二回目に練習したダン(訓練済みモデル)がその通りである保証はありません。タイムは最初よりも良くなります。乱数発生器のシードを宝くじの番号として使用した学生もいました。
機械学習の大きなカテゴリ
大まかに言うと、ML アルゴリズムは、必要なデータと学習方法に基づいて 3 つのカテゴリに分類できます。
监督学习/Supervised Learning/SL。
このタイプのアルゴリズムでは、データに特征/Features
と の両方が必要です标签/Labels
。教師が生徒に問題の解き方を教えるのと同じように、解答が終わった生徒に正解を明確に伝える必要があります。非监督学习/Unsupervised Learning/UL。
これらのアルゴリズムのデータは必要なだけであり特征/Features
、必須ではありません标签/Labels
。積み木で遊ぶ子供と同じように、ルールに従ってブロックを配置し、組み合わせます。强化学习/Reinforcement Learning/RL。
このタイプのアルゴリズムにはデータは必要ありませんが、それ训练对象/Agent
自体で探索できるデータと、环境/Environment
それによって作成できるいくつかの行为/Actions
合計が必要です奖励函数/Reward Function
。たとえば、ミミズを砂糖と電流のある迷路に入れると、ミミズは試行錯誤を通じて報酬を獲得し、迷路を通過する方法を学習します。
始める前の準備
ということで、このコラムでは機械学習に必要な環境やソフトウェアについて簡単に紹介しましょう。
Anaconda は、多くの組み込み関数を備えた非常に便利な Python 環境マネージャーです。主に使用するのはそのJupyter Notebook
機能です。そのコードはブロック単位で実行およびデバッグできるという利点があるため、モデルを簡単にデバッグして命令を追加できます。使用方法は公式サイトのチュートリアルJupyter Notebook
を参照してください。ブロガーは対応する ipynb ファイルも各ブログに追加する予定ですので、ご期待ください。
結論
次回のブログでは、ブロガーが ML メソッドを使用して線形回帰を実装する方法を紹介します普通最小二乘法/Ordinary Least Sqares/OLS
。ご質問やご提案がございましたら、お気軽にコメントまたはプライベートメッセージを送信してください。コーディングは簡単ではありませんが、ブロガーのコンテンツが気に入ったら、「いいね!」とサポートをお願いします。