ディープラーニングは多層ネットワークであることを別の記事で示しました。さらにニューラル
ネットワークは機械学習と呼ばれる研究分野で研究されているアルゴリズムの1つです。本記事
では、ニューラルネットワークを含む機械学習の基礎知識について説明します。
<教師あり学習と教師なし学習>
データと対になる正解を与えて学習する場合を教師あり学習(Supervised Learning)、正解を与え
ずにデータそのものを学習する場合を教師なし学習(Unsupervised Learning)といいます。
・教師あり学習
教師あり学習で有名なものとしてはニューラルネットワークの他に、単純ベイズ分類器、
ロジスティック回帰、決定木、サポートベクトルマシンなどがあります。教師あり学習を使って
学習させると、自動的に、コンピューターが高速且つ高制度に分類や判別を行ってくれる様に
なります。
・教師なし学習
教師なし学習の機械学習として、クラスタリング手法ではK平均法が有名です。また、
ニューラルネットワークでは、オートエンコーダと呼ばれる手法があります。教師なし学習
は、未知のデータを理解するための分析手法と言えます。また、教師あり学習のための前処理
としても用いる場合があります。
<強化学習>
機械学習を用いたプログラムにデータを与え、プログラムが何らかのアウトプットを
出力したとき、その出力データがどの程度好ましいものであったかを評価し、報酬を与え、
プログラムはその報酬をもっと得ようと調整していく学習の仕方を“強化学習”といいます。
入力データに対して、直接的な正解データを与える必要がないことが特徴です。
<ルールベース・知識ベース>
機械学習を用いたプログラムを設計者が考えたルールに基づいて動作するように実装
したものがルールベース(知識ベース)です。プログラムは設計者が指示したとおりに動作
するため、演繹的な手法であると言えます。設計者による試行錯誤が必要になる場合もあ
りますが、すでに方法論が確立している場合は、コンピュータによる学習時間を削減できる
ため、広く利用されています。
<統計的機械学習>
機械学習を用いたプログラムを、設計者がどの様に学習するかについてのアルゴリズム
とモデルを実装したものです。プログラムは設計者が指示した学習方法に則って動作を
修正できるため、帰納的な手法であると言えます。未知の課題やルールベースでは十分な
性能が発揮できない場合では、設計者による試行錯誤は必要なく、コンピューターがうまく
学習できれば、高い性能を発揮する場合があります。
<前処理と特徴抽出>
機械学習jは、すでに用意された生のデータをいきなり取り込んで学習することはできま
せん。まず、前処理として生のデータを機械学習のプログラムに読み込むことが可能な
データ形式に変換し、入力データとする必要があります。
一般的な機械学習アルゴリズムは、さらにその入力データから、学習に必要な特徴を
抜き出す処理を必要とします。これを特徴抽出(Feature Extraction)と呼び、従来は
機械学習には必要不可欠でした。
一方でディープラーニングでは、入力データから特徴抽出のフェーズを経ず、そのまま
プログラムに取り込んだ場合でも、十分な性能が得られることがわかってきています。
このことがディープラーニングが注目されている理由の1つになっています。
<バッチ学習とオンライン学習>
入力データ(あるいは抽出された特徴データ)を学習する際、学習する方法は大きく分けて
バッチ学習とオンライン学習の2つの方法があります。バッチ学習は、複数の入力データ
をまとめて学習し、学習が正しく行われたどうかの判定をまとめて行いフィードバックを
する方式です。オンライン学習は、入力データを1つ学習するたびに、学習が正しく行われた
かどうかを判定し1件ごとにフィードバックを行う方式です。
大量の入力データを学習する際にはバッチ学習の方が、まとめてフィードバック(学習を
行う)を行うため高速に処理をすることができます。対して、オンライン学習では1件ずつ
フィードバックを行うため、トータルの学習時間は長くなります。オンライン学習はバッチ
学習よりもトータルの学習コストがかかりますが、機械学習のプログラムを使ったサービス
を提供しながら徐々に賢くすることができるため、ユーザーとのインタラクションや対話が
あるサービスに用いられることが少なくありません。
<性能評価>
プログラムとして実装し、製品やサービスとして提供しようとした際には機械学習の
性能について評価する必要があります。機械学習の性能評価には、大きく分けて
学習時間、判定時間、判定精度、の3つがあります。
・学習時間
学習時間は、その名の通りプログラムが学習対象データを学習する時間です。学習に
かかる時間は短ければ短いほど良いのですが、学習対象のデータ量が多く、データ形式
が複雑なほど、十分に学習するまでに長い時間がかかる傾向があります。
・判定時間
判定時間は、やはりその名の通りプログラムが半判定対象データを判定する時間です。
判定にかかる時間も短いに越したことはないのですが、サービス等で利用するためには
判定時間は一定以下でなければなりません。
・判定精度
判定精度は、プログラムの判定結果がどのくらい正しく判定出来ているかを表します。
よく使われる指標については、”精度”、”誤り率”、”再現率”、”適合率”、”擬陽性”、
”偽陰性”などがあります。
<汎化能力>
機械学習アルゴリズムを実装したプログラムは、入力データを学習すればするほど
精度が上がり、場合によっては精度100%を達成することもあります。しかし、
このプログラムはある特定のデータにのみ正しく判定できる、つまり、未知のデータに
対しては全く精度が出ません。学習量を減らして、学習データに対しては70〜80%程度の
精度しか出ていない場合の方が未知のデータに対し、高い精度で判定できる場合があり
ます。
この現象は、過学習と呼ばれており、未知のデータに対する高い精度の判定ができる
機械学習アルゴリズムや学習の方法が好ましいとされています。このような未知のデータ
に対する性能のことは、”汎化能力”と呼ばれており、機械学習アルゴリズムそのものの
性能の高さを表します。