EverYours Japan

あなたの友でありつづけるコンテンツ

機械学習の仕組みとは?パラメータってなに?特徴って?学習編

機械学習ってどういう仕組みなの?処理はどういったことが行われているの?実装するにはどうしたらいいの?特徴選択ってなに?パラメータって何?

といった疑問に対してお答えします

簡単に言うと

  1. 学習
  2. テスト

です

このページでは1.学習について説明します

ここから話すことは、少し専門的なことになるので、あらかじめ機械学習の定義や種類などを知りたい方は

基本的なことや疑問に対して↓で説明していますので先に見ると理解しやすいと思います

学習

機械学習で「学習」をするためにはそれ用に”処理”が必要です

実際に私たち人が一番考えなきゃいけない、重要なのがこの部分かもしれません

具体的に何をやるかというと

  • 機械学習の手法の決定
  • 特徴の決定(特徴選択)
  • モデルのパラメータ設定の最適化

機械学習の手法の決定

機械学習の手法には得意、不得意があるため、それに合わせて実装する手法を決定する必要があります

なぜ得意なところや不得意なところがあるかというと

機械学習のモデルの理論や数式が完全ではないためです

例えば、数式に日本語で「あいう」といった文字列は入れることはできないですし、ある機械学習だと0から1までの値しか入れられません

私とても英語できます!という人でも、数学はできませんといった苦手なところはありますよね

そのため、 機械学習ごとの得意、不得意に合わせて実装する手法を決定する必要があるわけです

特徴の決定( Feature Selection )

ここでいう特徴とはコトバンクの定義とほぼ同じで

「他と比べて特に目立つ点」という意味です

機械学習では特徴という判断する材料を決める必要があります

例えば写真を見て「犬」かどうかを識別したい場合を考えます

犬には鼻がある

目がある

しっぽがある

等々の情報があります

ここで判断する材料として「目がある」という情報を決めたとします

ここで、目があるという情報しかなくて猫の画像を見せたとします

その場合、機械学習の結果は「犬」と帰ってきてしまいます

つまり、間違った特徴を選択してしまうと、間違った答えを出力することになりかねないということです

※もちろんここで出した、「目がある」という情報のほかに「しっぽがある」、「鼻がとがってる」といったいくつかの情報を決めると選べると思います

基本的には学習データを見て、特徴を決めていくとよいと思います

 

学習データを選ぶ 「特徴を選択すること」 について話しましたが

モデル(機械学習の手法)自体にも設定する必要があります

モデルのパラメータ設定の最適化

機械学習の手法ごとにあるパラメータを一番良い精度となるように設定する

超簡単に説明すると

犬には「チワワ」と「ダックスフント」「ドーベルマン」など何種類もいます

ここで、「柴犬」の画像を見せたときに「犬」と認識してほしいです

そのためには、どれくらいの誤差(違い)を許すかという設定が必要です

チワワとダックスフントと比べると結構、柴犬は見た目がちがいますよね?かわいさはほぼ同じでみんなかわいいですけど…

具体的に機械学習でのパラメータは

機械学習が学習することによって生まれる重みなどをいいます

よく聞く、ユーザーが任意に設定できる

ニューラルネットワークでいえば「ニューロンの数」

ランダムフォレストでいえば「木の数」

といったものはハイパーパラメータといわれていて違うものなので注意してください

 

これらの違いによって、大きく精度の差がでてきます

 

例えばSVMというモデルを考えます

SVMとはサポートベクトルマシンというモデルで教師あり学習の中で最も有名な学習の手法ともいわれています

プログラムが何をやっているかというと

分類する各グループ間の距離が最大となるような識別境界を求めている

理解しやすいようにいうと

学習データとして与えられた「犬」「猫」などのグループを理解して

↓の図でいう茶色の線(境界)を決めていくことで、「犬」か「犬」でないかを予想するということです

超簡単に説明してきましたが、いかがでしたでしょうか

あなたの勉強のお助けになれたら幸いです

もう少し機械学習について知りたい方は↓から

Javaで実装してみたいという方は↓から