機械学習
機械学習とは、数学的な根拠から予測・分類・クラスタリング・次元削減などを行います。
機械学習の種類として、教師あり学習、教師なし学習、強化学習があります。
教師なし学習で特徴を抽出して教師ありでそのモデルを再学習する方法として、半教師あり学習もあります。
機械学習(Machine Learning)は機械にトレーニングを行って、その機械が学習した内容から判断(関数を使用)して能動的に結果(動作含む)を出力させることです。
機械学習では、特徴量を利用して結果を出力しますが、人の画像であれば目や鼻・口などの特徴を数値化したものです。
機械学習の具体的手法
学習とは、コンピュータが実行するタスクTを性能指標Pで測定して、実行した経験を経験Eから改善することです。
タスクには、分類・回帰・異常検知・密度推定などが含まれます。
性能指標では、分類では混同行列が、回帰では、平均絶対誤差(MAE)・平均二乗誤差(MSE)などが用いられます。
経験は機械学習の種類で大きく分類でき、データ集合を指す場合が多くて特徴量を列に対応したものを計画行列といいます。
学習には、シングルタスク学習とマルチタスク学習があります。
シングルタスク学習は、一つのモデルで一つの問題を解決し、マルチタスク学習では複数の問題を単一のモデルで解決します。
マルチタスク学習は、分類と回帰を同時に解決したい場合や類似のタスクで解きたい場合に有効です。
大まかな機械学習の流れは、次のようになります。
- 1. データ選定:機械学習で使用するデータを選定します。
- 2. データの前処理:機械学習が正しく学習できるようにデータを整形・加工します。
- 3. 学習モデルの選定:線形回帰・SVM・主成分分析などアルゴリズムを選定します。
- 4. 学習モデルの学習:準備したデータを使用して学習モデルに学習させます。
- 5. 学習モデルの評価:学習モデルが正しく学習できるか準備したデータで評価します。
学習モデルとは入力したものに対して機械学習のアルゴリズムで計算した結果(予測)を出力するものです。
例えば、家賃を計算するモデルであれば、入力は部屋の広さや駅からの近さなどが入力になり、そこから家賃を予測して出力するものです。
また、初期値に人が設定するパラメータのことをハイパーパラメータといいます。
データの前処理
機械学習では基本的に数値のみを扱います。
取得したデータが、数値でないや不足しているまたは外れ値が入っているなどで、学習モデルが正しく学習できない可能性があるためデータを確認して必要に応じてデータを整形・加工します。
前処理の手法を以下に記載します。
-
正規化
データの標準化の一つで、決まった範囲に収めるように変換する手法です。
データの分布を調整する処理でデータの範囲が0から1の間に収まるよう変換するなどがあり、それは0-1正規化ともいいます。
データの分布が偏らないように重みの初期化を行う必要があります。
回帰などでは、事前に外れ値など取り除いてから行う方が適切です。 -
標準化
データの標準化の一つで、データの平均が0、分散が1になるよう変換する手法です。
-
白色化
データの標準化の一つで、データ全体の分布を均一に変換する手法です。
データ同士を無相関化します。 -
ワンホットベクトル
ダミー変数化ともいい、1と0のベクトルデータとして表現する手法です。
例えば、4都道府なら、東京都→[1,0,0,0]、大阪府→[0,1,0,0]、京都府→[0,0,1,0]北海道道→[0,0,0,1]と変換して区別させます。 -
バックオブワーズ(Bag-of-Words)
BoWとも略されて、出現頻度から頻度ベクトルのベクトルデータとして表現する手法です。
例えば「私は私のカレーが好き」であれば、[私,カレー,好き]→[2,1,1]と頻度ベクトルを作成します。 -
不均衡データ
分類問題を行うときに、犬と猫のデータを用意しているが犬の画像が99%では犬は正しく分類できるが猫が正しく分類できなくなります。
犬の画像を減らすことをアンダーサンプリングといい、猫の画像を増やすことをオーバーサンプリングといいます。 -
欠損処理
欠損値がある場合に行う手法です。
-
外れ値除去
外れ値がある場合に行う手法です。
-
フィルタリング
データにノイズなどが見られたときに行う手法です。
ローパスフィルタやハイパスフィルタなどがあります。 -
リサンプリング
時系列データでサンプリング周期が細かすぎる場合に行う手法です。
-
部分時系列化
時系列データを部分時系列データに変換するための手法です。
スライディングウィンドウを適用するなどがあります。
学習モデルの選定
どのような問題を解決したいのかを考えて教師あり学習・教師なし学習・強化学習のアルゴリズムを選択します。
家賃や株価の予測なら教師ありの回帰を画像の犬または猫などは分類では教師ありの分類で解決します。
教師なしでは次元削減やクラスタリングなどがあります、用途に応じてどのような学習モデルにするか選定します。
教師あり学習
教師あり学習とは、学習させるときに正解であるラベルデータを用意しておき学習時に正解であるデータで予測していく手法です。
主に迷惑メールの判定や株価などの予測に使われます。
学習モデルの学習・検証には、ホールドアウト法と交差検証法があります。
教師あり学習は大きく分けて回帰と分類があり、回帰は入力されたデータ(連続値)から数値を予測することで分類はカテゴリを予測します。
回帰と分類の大きな違いとして目的変数が回帰は連続値を使用して、分類は離散値を使用します。
目的変数とは、予測したいデータの変数で、目的変数を説明する変数に説明変数があります。
そのため、株価の予測なら説明変数に日経平均株価やダウ平均株価などが使われます。
あらゆる問題で良い性能を示す汎用的な手法としてノーフリーランチの定理がありますが、理論上実現は不可能です。
-
フィルタ法
説明変数と目的変数の相関係数を算出して絶対値が大きい説明変数に絞り込む手法です。
-
ラッパー法
説明変数の重要度を算出しながら学習を繰り返して重要度が引い説明変数を削る手法です。
-
埋め込み法
線形回帰の説明変数に罰則項を埋め込んで学習させて、その結果から説明変数を削る手法です。
分類問題では情報利得最大化することで判断基準としており、二値分類と多クラス分類があります。
ディープラーニングの分類問題ではデータ件数が多いクラスを優先して学習してしまうためクラスごとのデータ件数の偏りを極力小さくする必要があります。
また、分類問題ではデータが少ない場合にはデータが偏ってしまい学習に致命的な悪影響を及ぼすおそれがあります。
決定木
教師あり学習の一つで、分類問題と回帰問題を解くためのアルゴリズムです。
決定木はツリー上に選択しながら分岐して分析する手法です。
決定木は通常条件分岐が複雑になりやすいため、剪定(過学習を防ぐ)します。
決定木は分析結果が分かりやすくデータの前処理が少なくてすみます。
ランダムフォレスト
教師あり学習の一つで、分類問題と回帰問題を解くためのアルゴリズムです。
複数の決定木を使用して、平均などををとって分析する手法です。
バギングと決定木などを利用します。
k-近傍(k-nn)
教師あり学習の一つで、分類問題を解くためのアルゴリズムです。
最近傍のデータをk個取得して、kから最小の距離のクラスになるように分類します。
kが3でその中心から、Aクラスが2つとBクラスが1つならAクラスに分類されます。
最近棒法は1-nnとなります。
kの値が変化すると結果も変動し、kの値が大きくなると決定する境界線も滑らかになります。
バギング
教師あり学習の一つで、複数の学習器を総合的な出力結果を求めるアルゴリズムです。
アンサンブル学習の一つで、ブートストラップサンプリングで得られた学習データを利用して、一度抽出したサンプルを再度抽出します。
アンサンブル学習とは複数のモデルの予測結果から、最終的な予測結果を決めます。(モデルを個別に学習させて複数の出力を平均)
アンサンブル学習にはスタッキング(学習機にランダムフォレストや勾配ブースティングなどを使う)もあります。
ブートストラップサンプリングとはデータセットから重複を許容してランダムに無作為に抽出したデータにします。
ブースティング
教師あり学習の一つで、一部のデータを繰り返し抽出して、そのデータを訂正しながら精度を高めるアルゴリズムです。
バギングよりも精度向上が期待できます。
AdaBoostや勾配ブースティングなどがあります。
教師なし学習
教師なし学習とは、正解であるデータを与えないで学習をさせて特徴をグループ化していく手法です。
主に自動運転や画像認識などに使われます。
教師なし学習ではデータにラベルや答えがなくても特徴を捉えて自動的に分類・要約することができます。
似ているデータをグループに分けることをクラスタリングといい、それには階層ありと階層なしがあります。
グループ(クラスタ)の数は人が決め、グループ分けするときにデータ間の距離を測りますが、正解が存在しないことも多いです。
教師なし学習のキーワードとしては以下があります。
t-SNE(t-distribution Stochastic Neighbor Embedding)
教師なし学習の一つで、高次元データを可視化するのに適した次元削減のアルゴリズムです。
高次元での距離分布が低次元の距離分布にも合致するような非線形型の変換します。
潜在的ディリクレ配分法(LDA)
教師なし学習の一つで、文書からトピック(話題)を推定するアルゴリズムです。
トピックを推定するアルゴリズムには、潜在的意味解析と呼ばれるLSI (Latent
Semantic Index)もあります。
レコメンデーション
教師なし学習の一つです。
レコメンデーションには以下があります。
-
ルールベースレコメンド
ルールを設定してそれに従います。
-
コンテンツベースフィルタリング
特徴が似ている商品を推薦します。
-
パーソナライズドレコメンド
性別・年齢などの属性だけでなく購買情報も利用します。
-
協調フィルタリング
購入履歴などから推薦したい商品を探すなどで利用しますが、ある一定のデータがないとスタートできません。それをコールドスタート問題といいいます。
強化学習
強化学習とは、教師あり・教師なし学習とは異なり、エージェントが環境(状態)に応じて行動(方策)して報酬(価値)を最大化することを目的とした手法です。
環境について学習できていないと未知の行動を起こす必要がありますが、エージェントが得れる報酬は少ないです。
また、エージェントが得れる報酬が高い行動を行うと報酬は多いのですが新たな行動(良い行動)が見つけれず、この2つはトレードオフの関係があります。
学習させるためのデータの準備は少なくても大丈夫ですが、学習モデルを作成するため難易度が非常に高くなります。
主に掃除ロボットやゲームなどに使われます。
強化学習の手法は以下になります。
-
動的計画法
マルコフ決定過程があたら得られている場合の手法です。(方策反復法・価値反復法)
-
モンテカルロ法
遷移のサンプルを取得して収益を平均化して価値観数を推定する手法です。
TD学習と比べて修正の妥当性や速さはありますが、エピソードが終わるまでは修正できません。 -
TD学習
目標の価値と現在の価値を修正しながら価値観数を推定する手法です。
具体的にはSarsa(方策オン型)とQ学習(方策オフ型)があります。
SarsaはQテーブルの更新時に遷移先の状態の結果を使用し、Q学習に比べて行動価値関数の小さい探索結果が反映されやすいです 。
Sarsaは状態や行動が離散値でなく連続値でも適用可能で、状態と行動の集合は有限でマルコフ性なら有限回で収束します。
Q学習では状態の遷移にQ値(価値の最大値)を使用して、 行動価値関数を行動する度に更新して学習していきます。
Sarsaよりも行動価値関数の収束が速いが保証がありません。
また、行動を決定する方策と行動価値関数の更新に利用される方策が異なります。
強化学習の関数と勾配法を以下に記載します。
-
価値関数
行動に対して価値を表した関数です。
状態価値関数と行動価値関数があります。
状態価値関数は、状態から将来もらえると期待できる割引総報酬を表す関数です。
行動価値関数は、行動から将来もらえると期待できる割引総報酬を表す関数です。
-
方策関数
状態に応じてよい行動を探索する関数です。
-
方策勾配
勾配法の仕組みを用いて総報酬を最大化する手法です。
勾配を計算するためには、確率的方策のパラメータθを微分する必要があります。
最小減の行動で最適な総報酬を求めるREINFORCEアルゴリズムがあります。
強化学習の手法には、既に知られている環境を前提に強化学習を行うモデルベース強化学習と未知の環境を前提に強化学習を行うモデルフリー強化学習があります
。
モデルフリーの強化学習では、多くのサンプルが必要になりますので世界モデルとしては教師なし学習で予めモデルを構築させて、その構築したモデルを使用します。
将来期待できる総報酬を問題(総報酬が無限になるなど)なく見積もるために、即時報酬を乗算させる値として割引率(ハイパーパラメータ)を使い、割引率は0から1の間の値を使用します。
強化学習のキーワードとしては以下があります。
-
バンディットアルゴリズム
実データを利用して最適な行動を探す手法です。
ε-greedy 方策とUCB方策があり、詳細を以下に記載します。
ε-greedy方策:εの確立でランダムにし、それ以外は総報酬の期待します。
UCB方策:総報酬の期待値が高い行動を選ぶという基本方針で試行数が少ない行動を優先させます。 -
マルコフ決定過程モデル
4つ{状態(S)・行動(A)・遷移確率(P)・報酬(R)}で構成されており、マルコフ性に従って行動を行う手法です。
-
Actor-Critic
行動を決めるActor(方策)と選択した行動を評価するCritic(価値関数)が交互に更新しながら学習を進めていく手法です。 A3C(Asynchronous Advantage Actor-Critic)があります。
A3Cは、非同期にサンプル生成を並列に行い学習を安定化させており、マルチコアCPUではDQNより高い性能が見られています。
学習モデルの学習と検証
学習モデルの学習と検証について記載します。
学習モデルの目的は、汎化性能が高い学習モデルを作成することです。
これは、学習モデルを学習するために使用した学習データに強いモデルにさせるのではなく、まだ使用したことのない未知のデータに対応できることを意味しています。
そのため、作成した学習モデルが出力するものが、未知のデータに対して正しく評価・予測が行えているかを確認する必要があります。
未知のデータを使用して学習モデルとの誤差を調べる関数として誤差関数があります。
学習モデルを作成するために自身が集めた学習データを訓練データ・検証データ・テストデータに分けます。
それぞれの学習データは以下にあります。
-
訓練データ(訓練集合)
学習モデルの学習(訓練)に使用します。
-
検証データ(検証集合)
訓練データの一部として、ハイパーパラメータの調整を行います。
-
テストデータ(テスト集合)
学習モデルが正しく学習できているか評価します。
学習データの訓練データ・検証データを使用して、学習モデルを訓練させて重みやバイアスなどのパラメータを調整して学習モデルを作成します。
学習モデルの学習と検証の手法として以下があります。
-
ホールドアウト法
学習用のデータを訓練用のデータと検証用のデータに分割し、訓練用のデータを用いてモデルを作り、その学習済みモデルと検証用データを用いて未知のデータに対する予測を行う手法です。
そのため、訓練用にデータを増やせば検証用が少なくなり、検証用を増やせば訓練用のデータが少なくなります。
手元に大量のデータがないと良い性能が出ない可能性が高いです。
学習と検証時にパラメータを最適化する手法に勾配降下法(最急降下法)や確率的勾配降下法(SGD)があり、勾配降下法(最急降下法)では目的関数が最小になるパラメータを見つけます。
確率的勾配降下法(SGD)以外の手法を使用する場合には目的関数の勾配の値が次元ごとに大きく異なることがあります。
学習モデルが訓練データで訓練した内容を再現力できることを表現力といいます。
学習データの数が増えれば、不要な変数を削除しても表現力を抑止できます。
表現力が大きくなると一般的にバイアスは小さくなり、バリアンスは大きくなります。
バリアンスは予測値がどれだけ散らばっているかを示す度合いでバイアスは実際値と予測値との誤差の平均のことでノイズは観測したときの誤差になります。
バリアンスとバイアスは、単純なモデルではバリアンスが低くバイアスは高く、複雑なモデルでバリアンスが高くバイアスが低くなるトレードオフの関係があります。
回帰の学習モデルでは誤差関数を二乗誤差とした場合に汎化誤差は、バリアンス、バイアス、ノイズの3つの要素に分解できます。
学習モデルの評価
学習モデルを作成して訓練を実施したら、テストデータを利用して評価を行います。
訓練誤差とは訓練に用いたデータに対する誤差で、汎化誤差とは訓練に用いていない未知のデータに対する期待値の誤差です。
訓練データに対する誤差は少ないがテストデータによる誤差が大きいことを過剰適合といい、訓練データとテストデータによる誤差が大きいことを過少適合といいます。
訓練データに適合しすぎず、未知のデータに対応が行える汎用的な学習モデルが良いモデルです。
過剰適合では、学習モデルが過学習をしている可能性が高く途中で学習を打ち切ったり、正則化項を導入して対応します。
過学習とは訓練データに適合しずぎてしまい未知のデータでは正しく評価・予測ができない状態のことです。
過小適合では、学習モデルが訓練が行えていない未学習の可能性が高く、訓練データを増やして対応します。
未学習とは訓練誤差も汎化誤差も小さくならないため、全体の汎化性能が低い状態です。
学習モデルが複雑になるとなぜそのようになったかを説明するのが難しくなります。
学習モデルを説明する手法としてLIME・SHAPがあり、CNNやアンサンブルツリーなどの機械学習モデルに適用できます。
ある事柄を説明するのに必要以上に多くの仮定をすべきではないオッカムの剃刀がラッソなどのスパースモデリング手法があります。
ハイパーパラメータ探索
学習モデルの最初に人が設定するパラメータなどのことをハイパーパラメータといいます。
機械学習もこのハイパーパラメータに依存して、適切に設定する必要があります。
ハイパーパラメータを自動で探索する手法にはランダムサーチ、グリッドサーチ、ベイズ最適化があります
。
以下に詳細を記載します。
-
ランダムサーチ
指定された範囲でランダムに最適なハイパーパラメータを設定します。
-
グリッドサーチ
すべての最適なパラメータの組み合わせで評価値を算出して設定します。
目盛りを区切り値の候補を決めて、候補のすべての組み合わせから汎化誤差が小さいものを採用します。