AI研究所 - AI(人工知能)に脅かされないために、AI(人工知能)を作る側の人間になる -

HOME  >  機械学習とは!?機械学習の概要や種類について徹底解説!

公開日:2020.06.23 

機械学習とは!?機械学習の概要や種類について徹底解説!

機械学習

機械学習とは

こんにちは、AI研究所の見習い研究員マサミです。
AIを学ぶ上で必ず耳にする「機械学習」ですが、機械学習について学ぼうとするとと様々な言葉が出てきてよくわからず挫折される方もいらっしゃるかと思います。

例えば機械学習に出てくる言葉と言うと

  • パーセプトロン
  • サポートベクターマシン
  • ディープラーニング(深層学習)
  • ニューラルネットワーク
  • 教師あり学習
  • データマイニング
  • ベイジアンネットワーク
  • 決定木
  • 強化学習
  • 帰納論理プログラミング

など、調べれば調べるほどそもそも機械学習が何なのか分からなくなってきてしまいますよね。
そこで今回は機械学習が何なのかを簡潔にまとめていきたいと思います。
さらに、AI研究所が開催しているAI入門セミナーで使われているAzure MLで使える機械学習の種類についても併せて説明していきます!

まず機械学習とは何!?

機械学習

まず、機械学習についてですが、その名の通り機械(コンピューター)に学習させることです。
そのまんまですね(笑)

人工知能も私たちと同じように学習しなければなりません。
例えば、クレジットや融資の審査を行おうとした時に年収や職業などから審査をしますが、審査のために専門知識が必要です。
私たち人間はこういった知識を蓄える時、勉強(学習)をします。
年収が300万円以上かつ正社員なら審査OKとか、借金があったらNGなど、分厚い参考書を読みながら勉強します。

では、人工知能はどのようにして学習するのでしょうか?
コンピューターに分厚い参考書を読ませるなんてことはしません。

人工知能に学習させる方法として大きく分けて2通りあります。
人間が手打ちで教える方法と機械学習です。

ここで注意していただきたいのが、人間が手打ちで教える方法はよく耳にする「教師あり学習」ではありません。
「教師あり学習」は機械学習の一部です。教師ありと教師なし学習については後ほど説明します。

人間が手打ちで教える方法は、コンピューターに勉強した知識をプログラムする方法です。
先ほど記述したように、年収が300万円以上かつ正社員なら審査OKとか、借金があったらNGなどをif文を組み合わせてプログラミングします。

機械学習が盛んになるまではこのようにして人工知能は作られていました。
最初に作られたされている人工知能も数行のプログラムでできていました。

ただ、クレジット審査やメールスパム判定などある程度予測ができるものだったらプログラミングでも頑張れば組めると思いますが、画像識別についてはどうでしょうか?

「3」という画像があった時に、それをどのようにコンピューターに教えたらいいと思いますか!?
例えば、

・コブが3つあったら「3」
・カーブを描いていたら「3」
・左が空いていたら「3」

などとプログラムを組めるかもしれませんが、これが人間の顔の識別となるともう無理そうです。

そこで機械学習の登場です!!
では、機械学習はどのように行うのでしょうか。

機械学習を簡潔にざっくりと表すと、
大量のデータから特徴を見つけ出して、そのデータを分類する
ことです。

クレジットカード審査の例でいいますと、大量の過去の審査結果のデータから特徴を見つけだし審査できるようにします。
クレジット審査以外も考え方は同じです。
顔認証の場合は、大量の人の顔の写真データから特徴を見つけ出します。
この特徴とは、人が目で見て理解しているようなものではなく、「特徴ベクトル」や「プロトタイプ」といったものを使ったベクトルや閾値関数となります。

また、機械学習には「教師あり学習」と「教師なし学習」があります。
「教師あり学習」は、この画像は猫であるとか、この場合は審査OKである、といった具合に入力されたデータと正解(ラベル)が1対1で紐づいている訓練データを使って学習することです。

「教師なし学習」は、入力されたデータの正解(ラベル)は与えらておらず、データに存在する特徴を探し出しデータの似た者同士をグループ分けする用途で使用されます。

機械学習の技法について

それでは、ニューラルネットワークや帰納論理プログラミング、サポートベクターマシン、ベイジアンネットワークなどとよく耳にする用語は一体何なんでしょうか。

これらはすべて機械学習の技法になります。
以下、機械学習の技法一覧をwikipediaより抜粋しました。

機械学習の技法
[決定木学習]
決定木を予測モデル(英語版)として使用した学習であり、アイテムについての観測をそのアイテムの目標値についての結論とマッピングする。具体例としてID3やRandom forestがある。

相関ルール学習(英語版)

大規模データベースにおける変数間の興味深い関係を発見するための技法です。

ニューラルネットワーク (NN)

人工ニューラルネットワーク (ANN) とも呼ばれ、生物の神経ネットワークの構造と機能を模倣するという観点から生まれた学習アルゴリズムである。人工神経を相互接続したもので計算を構造化し、コネクショニズム的計算技法で情報を処理する。現代的ニューラルネットワークは非線形な統計的データモデリングツールである。入力と出力の間の複雑な関係をモデル化するのに使われ、データのパターン認識や観測された変数間の未知の同時分布における統計的構造を捉えるなどの用途がある。

遺伝的プログラミング (GP)

生物の進化を模倣した進化的アルゴリズムに基づく技法であり、ユーザーが定義したタスクを実行するプログラムを探索する。遺伝的アルゴリズムを拡張・特化させたものである。所定のタスクを実行する能力によって適応度地形を決定し、それによってコンピュータプログラムを最適化させていく機械学習技法である。

帰納論理プログラミング(英語版) (ILP)

例、背景知識、仮説を一様な表現とし、論理プログラミングを使って学習を規則化する技法である。既知の背景知識と例の集合をコード化して事実の論理データベースとし、全てのポジティブな例を含み、ネガティブな例を全く含まない仮説的論理プログラムを生成する。

サポートベクターマシン (SVM)

単純パーセプトロンにマージン最大化を加えて教師ありデータを線形に2値分類する。
数値データより、カテゴリーデータの扱いに長けており基本的には線形の分離ができるが、カーネル関数を使用することで次元を増やし、非線形の分離ができるようになっている。
多クラス分類をする場合は、1対他分類法または1対1分類法を使用する(複数のSVMを組み合わせる)ことで対応する。
通常のハードマージンSVMはノイズの影響を受けやすいため、ノイズにペナルティを課してマージン幅を調整するソフトマージンSVMにより、ノイズに影響を受けづらくすることが出来る。

クラスタリング

クラスタリングは、観測された例をクラスタと呼ばれる部分集合に振り分けるもので、振り分けは事前に指示された基準に従って行う。クラスタリングはデータの構造についての仮説(基準)の立て方によって結果が異なる。仮説は「類似尺度」で定義され、「内部コンパクト性」(同一クラスタ内のメンバー間の類似性)や異なるクラスタ間の距離によって評価される。「推定密度」や「グラフ接続性」に基づく技法もある。クラスタリングは教師なし学習技法であり、統計的データ解析でよく使われる。

ベイジアンネットワーク

確率変数群とそれらの条件付き独立性(英語版)を有向非巡回グラフ (DAG) で表した確率論的グラフィカルモデルである。例えば、病気と症状の関係を確率的に表すことができる。そのネットワークに症状を入力すれば、考えられる病気の一覧を確率付きで出力できる。これを使って推論と学習を行う効率的アルゴリズムが存在する。

強化学習

「エージェント」が「環境」の中でどのような「行動」をとるべきかを、何らかの長期的「報酬」を最大化するよう決定する。環境の「状態」からエージェントの行動への写像を行う「方針」を求めるのが強化学習アルゴリズムである。正しい入出力例は与えられないし、最適でない行動が明示的に訂正されることもないので、教師あり学習とは異なる。

表現学習(英語版)

教師なし学習アルゴリズムの一部は、訓練中に提供された入力のよりよい表現を発見しようとする。古典的な例として主成分分析やクラスタ分析がある。入力の持つ情報は保持したまま、分類や予測の前に入力をより便利な表現に変換するアルゴリズムもある。その際に入力データが従っている未知の確率分布から入力を再建できるようにするが、その確率分布においては信じがたい例も忠実に再現する必要はない。例えば多様体学習(英語版)アルゴリズムは、何らかの制約下で入力の次元を低く変換して表現する。スパースコーディング(英語版)アルゴリズムでは、入力が疎ら(ゼロが多い)という制約下で同様の表現の変換を行う。ニューラルネットワークの深層学習は複数レベルの表現または特徴の階層を発見するもので、低いレベルで抽出した特徴から高いレベルの抽象化した特徴までを求める。知的機械は、観測されたデータを説明する偏差の潜在的要因を解きほぐす表現を学習するものだという主張もある。

先ほど例にあげた画像識別でいうとニューラルネットワークを利用したディープラーニングが成果を上げています。

機械学習の際に、どのように特徴を見つけだしているか皆さん気になるところだと思うんですが、ブログに書いているとすごい文字数になってしまいそうなので、ご興味にある方はAI入門セミナーを是非ご受講ください!!

初めての方向け AI(人工知能)入門セミナー:http://ai-kenkyujo.com/

Azure MLで使える機械学習の種類について

機械学習

Azure MLとは、Microsoft社が提供している「Microsoft Azure」の中の一つのサービスで、機械学習をWebブラウザ上で簡単にできるプラットフォームです。

Azure MLで利用出来るは機械学習の種類は以下の4つです。

・クラス分類(Classification)
・クラスタリング(Clustering)
・回帰(Regression)
・異常検知( Anomaly detection)
※ RやPython言語を使えば上記4つ以外の機械学習も可能です。

ではそれぞれ説明していきます。

■クラス分類(Classification)

クラス分類(classification)とは与えられたデータがどのカテゴリー(クラス)に当てはまるのかを識別する手法です。
AI(人工知能)と聞いて一番イメージが湧きやすいのがこのクラス分類なのではないでしょうか。
ある写真に写ったものが「野菜」なのか「果物」なのかを判別する画像認識の分野でよく使われます。
あらかじめどんなものが野菜でどんなものが果物かを知っておく必要があるので、「教師あり学習」に属します。

■クラスタリング(Clustering)

機械学習

クラスタリング(clustering)とは、ラベリングされていないデータの中からある特徴を見出して分類するアルゴリズムです。
似たような特徴をもとにデータのまとまり(クラスタ)を作っていきます。
最初から正解となるデータがあるわけではないので「教師なし学習」になります。代表的なクラスタリングの例は「Googleのネコ」。
Googleのネコに関する記事は「【簡単3ステップ】 初心者でも分かるAI(人工知能)の作り方」を参照してください。
クラスター分析はk-means(K平均法)というアルゴリズムを使って行います。Pythonプログラミングを使えば自分で最初から実装しなくても比較的カンタンにクラスタリングを行うことができますよ。

■回帰(Regression)

回帰(Regression)とは、連続する数値を予測する教師あり学習
日本語から意味が良く分からないですが、様々な関連性のある過去の数値から未知の数値を予測するアルゴリズムです。
過去に蓄積された情報をもとに、具体的な数字を予測していきます。
広告費を増やしたらどのくらい売上の増加が見込めるのかなどに使われていますね。
住宅価格や株価予測などの金融分野にもよく使われる実践的な手法です。

■異常検知( Anomaly detection)

機械学習

異常検知(Anomaly detection)はその名の通り、データの中から、ふるまいの異なる異常な状態を検知する技術のことです。
クラス分類との違いは、異常が一つでもあった場合に異常となります。
工場での機械の故障の検知やクレジットカードの不正使用検知、最近ではSNSの炎上の兆しの検知などもできるようになってきています。
統計モデルを使ったホテリング理論やデータ間の距離に基づくk近傍法などの手法が使われています。


Azure MLの利用方法については「プログラミング不要!? AI(人工知能)の作り方【Azure ML – 機械学習】」を参考にしてみてください!
数字の画像を判別できるAI(人工知能)のモデルをニューラルネットワークを利用して作成する手順を分かりやすく説明しています!

Kerasを使って機械学習をもっとカンタンに

機械学習をもっとカンタンに扱えるようになる便利な方法がKerasです。
KerasとはPythonで作られた、オープンソースのディープラーニングフレームワークの1つ。
ディープラーニングに挑戦するハードルをKerasが圧倒的に下げたともいわれていますよ。
Tensorflow上で動作し、簡単にプログラムを書くことができます。
もし、Tensorflowってなんだ?と思った方は「TensorFlowとは?TensorFlowを徹底解説してまとめました」の記事をご覧ください。

Kerasで機械学習を行うメリット

機械学習

Kerasはなんと行っても、コーディングの可読性。
Tensorflowでは何十行にもなってしまうソースコードが、数行で実装できてしまいます。
なので機械学習や深層学習の勉強を始めたばかりでAIプログラミング初心者の人や、手っ取り早く動かしてみたい人などにKerasは向いています。
公式サイトには英語版と日本語版がありますが、やはり英語版の方が知ることのできる情報は多いです。

Kerasでどんな機械学習ができる?

Kerasを使えば、画像認識や文章の生成、株価予測なんかもできてしまいます。
CNN(畳み込みニューラルネットワーク)を使った画像分析もkerasを使えば簡単にできてしまいますよ。
Azure MLでCNN(畳み込みネットワーク)を使ってディープラーニングさせる方法」には、さらに詳しくCNNについて解説しています。
弊社で開催している「AIエンジニアになるための3日間集中セミナー」でも2日目にkerasを使った講義があるので、興味のある方はぜひ受講してみてください。
他にもデータセットを使って、教師あり学習モデルを作成したりももちろんできますので色々試してみるのがいいですね。

機械学習とは?まとめ

機械学習について詳しく解説していきましたがいかがでしたか?
複雑なようですが、AIについて知識があれば分かりやすい単語だったかと思います。
機械学習に興味があるなら是非深く学習してみてくださいね。


参考になったら「いいね!」と「シェア」をお願いします!!

このエントリーをはてなブックマークに追加
AI(人工知能)セミナー開催中