人工知能・機械学習でよく使われるワード徹底まとめ!
IT技術
人工知能、機械学習でよく見るワードをまとめました
機械学習を学んでいて「なんだこの言葉...」となったことはありませんか?
訳も分からず得体の知れないものを扱うのはよくありませんが、いちいち単語を調べるのはとても手間がかかる…。
そこで、本記事では「人工知能」「機械学習」「ディープラーニング(深層学習)」でよく見る単語をいくつかまとめてみました。
まずは、大枠から解説していき、段々と小さなカテゴリに進むように解説していきます。
なお、本記事で紹介する単語は、全体像をなんとなく知ることができる程度の解説しかしていません。
そのため、さらに詳しく知りたい方は、本ブログの他の記事を参考にしてみて下さいね!
人工知能と機械学習
そもそも、人工知能と機械学習の違いは何でしょうか?
どちらもよく聞くワードですが、実は、この2つの意味は全くの別物です。
人工知能 : Artificial Intelligence (AI)
まずは、「人工知能(Artificial Intelligence)」から説明します。
人工知能とは、「人間の振る舞い(の一部)を再現したソフトウェア」を指します。
つまり、人工知能は「モノ」です。
例えば、工場で製品に欠陥がないかを画像判別するロボットには「人工知能が搭載されている」と言えます。
機械学習 : Machine Learning (ML)
一方、機械学習は「人工知能を作るための技術」を指します。
つまり、機械学習は「手段」です。
また、機械学習にも「たくさんの手法」があります。
例えば、後で紹介しますがニューラルネットワークを学習させる「誤差逆伝播学習法」や「強化学習」、「遺伝的アルゴリズム」などが機械学習に当たります。
- 人工知能
- 機械学習
このように、「人工知能」と「機械学習」という2つのワードには明確な違いがある事を覚えておきましょう。
機械学習の大まかな種類
まずは、機械学習の大まかな分類を解説したいと思います。
機械学習といっても、多くの環境に合った学習法が提案されていますが、それらは人工知能分野において共通して覚えておかなければなりません。
機械学習は、大きく分けて「教師あり学習」と「教師なし学習」に分類されます。
とりあえず、
- 教師あり学習:教師ラベルを使う学習
- 教師なし学習:教師ラベルを使わない学習
と覚えておきましょう。
教師あり学習 : Supervised Learning
教師あり学習は、各学習データと正解ラベル(教師ラベル)がペアになっており、その2つの情報を両方使う学習を指します。
たとえば、「ネコの画像」を与えた場合、「その画像はネコだよ」と一緒に教えてあげるイメージです。
教師あり学習にも多くの分類がありますが、それは、また後ほど解説します。
教師なし学習 : Unsupervised Learning
教師なし学習という名前からわかるかもしれませんが、学習データのみでの学習を指します。
もしくは、単に教師ラベルを与えない学習とも言えます。
「どうやって学習できるのかイメージできない」という方もいるかと思います。
この辺りも、後ほど例を用いて解説していきたいと思います。
機械学習のタスクについて
機械学習には、多くのタスクがあります。これも、最初に理解しておきましょう。
クラス分類 : Classification
クラス分類は、みなさんが一番想像しやすい人工知能のタスクです。
その名の通り、クラスを分類するタスクで、入力された情報がどのクラスに分類されるかをモデルは出力します。
したがって、基本的に教師信号を必要とし、ほとんどが教師あり学習になってしまいます。
例えば、道路交通標識を分類するモデルならば、入力された標識が「一時停止」なのか「速度制限」なのかを識別する、といった形です。
ですので、あらかじめ何を分類するのかを決めておく必要があり、追加で学習する場合は工夫が必要です。
【関連記事】
・人工知能の欠点、破局的忘却とは?
クラスタリング : Clustering
クラスタリングは名前からクラス分類と混同しやすいですが、全く違うタスクを意味します。
クラスタリングはクラス分類と違い、教師信号は使いません。
クラスタリングは与えられたデータ集合から、「似通った部分集合を見つけいくつかのグループに分ける」というものです。
この部分集合をクラスター(cluster)と呼びます。
回帰 : Regression
回帰とは、端的にいうと与えられたデータから近似関数を求めることを指します。
もっと簡単に言えば、特徴空間に線を引くことを言います。
例えば、一番シンプルな線形回帰(Linear Regression)が分かりやすいと思います。
以下の図のように、散らばった学習データから近い線形関数を求めます。
この線形回帰では、与えられたデータがどのような関数から得られたものなのかを推測することができます。
これは、統計学でも、よく使われていますね。
人工知能のモデル
次に、人工知能のモデルを紹介します。
人工知能と一重に言っても、モデルはたくさんありますので、一つずつ大枠を紹介していきたいと思います。
ニューラルネットワーク : Neural Network (NN)
ニューラルネットワークは、おそらく最もメジャーなモデルだと思います。
ニューラルネットワークはその名の通り、動物の「神経回路網」を模倣した人工知能です。
通常のニューラルネットワークは、多層パーセプトロン(MLP: Multilayer Perceptron)とも言います。
【関連記事】
・ニューラルネットワークとは?【人工知能】
・機械学習の元祖「パーセプトロン」とは?【人工知能】
・多層パーセプトロンを実装してみよう!【人工知能】
強化学習 : Reinforcement Learning
強化学習とは、あるエージェント(例えばロボット)に対して現在の環境が入力として入り、それに対してどのように行動するかを決定するようなモデルです。
学習の仕方としては、「良い環境にたどり着いたら報酬を与え、悪い環境にたどりついたら罰則を与える」ことをします。
例えば、迷路を解くモデルを作るとします。
- ゴールやその付近には「報酬」
- 壁には「罰則」
ゴールやその付近には、あらかじめ多くの報酬が用意されていて、逆に壁には罰則を用意しておきます。
エージェントは、スタート位置から最初はランダムに行動し、壁にめり込んでしまったら「罰則」、ゴールに偶然たどり着けたら「報酬」が与えられます。
すると、エージェントは、今いる環境(座標)ではどのように行動したら報酬がたくさんもらえるかを学習していきます。
決定木: Decision Tree
決定木も、しばしば機械学習では取り上げられるモデルです。
最初から例を挙げて説明しますが、入力されるデータは例えば「明日の天気は曇りで気温は20℃、降水確率は20%のとき、明日ゴルフはすべきか?」のようなイメージです。
過去のデータから、どの要因が「ゴルフができる」に、より直結的かどうかを考慮して、その要因を優先的に評価するような木を作ります。
例えば、過去のデータから「降水確率が30%以上のときにゴルフは80%やっていない」という情報と「天気が雨の時100%ゴルフをやっていない」という情報だと、明らかに後者の方が一気にデータを捌くことができそうです。
このような評価を、数学的に評価しながら決定木を作っていきます。
ニューラルネットワークでよく出る用語
前章では、ニューラルネットワークを紹介しました。
ニューラルネットワークには、たくさんの用語がありますので、ひとつひとつ簡単に紹介していきます。
全結合層 : Fully Connected Layer
全結合層とは、その名の通り前層と後層のニューロンが全て接続されている層のことを言います。
呼び方は、実は、たくさんあります。
- Fully Connected Layer
- FC Layer
- FC層
- Affine Layer (アフィン空間、アフィン写像から由来)
- Dense Layer (kerasなどで使われる)
上記のどれも全結合層を指します。
畳み込み層: Convolutional Layer, Conv. Layer
畳み込み層は画像処理や、自然言語処理などでよく見られる処理層で、役割は周辺情報を考慮した特徴抽出です。
画像処理であれば、注目ピクセルの周囲1ピクセル、計3×3の情報を取り込むことによって位置情報や周囲のピクセルとの関係性を特徴として捉えることができます。
また、自然言語処理であれば注目単語の前後に存在する単語も取り込むことによって、より文解析が高度にできるようになります。
この畳み込み層によって出来た沢山の画像は、特徴マップ(feature map)と呼ばれます。
プーリング層: Pooling Layer
プーリング層は「層」と言っていますが、実際に層数に数えられることはほとんどありません。
何をしているかというと、画像サイズや畳み込み層によって出来た特徴マップのサイズを削減する役割を持ちます。
単に削減するだけなので、重みパラメータはありません。
プーリング層では、畳み込み層と同じようにフィルタが決められています。
例えば、よく使われるMax Poolingであれば、そのフィルタが当てられている中から大きい値のみを抽出します。
ですので、3×3のプーリングであれば、サイズは1/9になるわけですね。
このプーリングのメリットは、入力画像のズレに強くなることもあります。
大きい値が多少ズレても、抽出される値はその大きい値なので結果に変わりはない、ということです。
ドロップアウト: Dropout
ドロップアウトも最近ではよく使われるようになってきました。
ドロップアウトの最大の目的は、過学習を抑制することです。
ニューラルネットワークは複雑になればなるほど、訓練データに対して過剰に適合する高等関数になってしまいます。
そこで学習時にネットワーク中間層のニューロンをランダムに非活性化させることで、わざと訓練データに対して学習を難しくさせ、汎化性能をあげようとしたものがドロップアウトなのです。
やりすぎると訓練精度も落ちてしまうので、不活性率をいろいろと試す必要があります。
ディープニューラルネットワーク: Deep Neural Network, DNN
ディープニューラルネットワークとは、その名の通り、深い層を持ったニューラルネットワークのことを指します。
どの程度深ければ良いのか、というのは定まっておらず、一般的に畳み込み層を複数含んだネットワークを「ディープ」と呼ぶことが多いです。
また、ディープニューラルネットワークを用いた学習は深層学習(ディープラーニング, Deep Learning)と呼ばれます。
ニューラルネットワークに限らず、Deep Q Network (DQN)などの強化学習分野においても深層学習という言葉は使われるようです。
有名なディープニューラルネットワークは、ResNetやAlexNet、VGG16などです。
少なくとも10層、多くて50層や100層にもなるニューラルネットワークが提案されていますが、特に対策せずに層を深くしすぎると勾配消失問題に陥り、逆に精度が悪くなってしまうことがあります。
その点、ResNetは、それを克服しており、実験では1000層まで学習が可能という結果があります。
強力な機械学習手法
最後に、現在、よく扱われている機械学習手法をいくつか紹介します。
誤差逆伝播学習法: BackPropagation (BP)
誤差逆伝播学手法(通称BPまたはバックプロパゲーション)は、1986年に提案された古い手法にも関わらず今もなお、多くの人工知能技術を支えている超強力な学習法です。
その名の通り、ネットワークの出力情報と教師情報との誤差を計算し、その誤差を小さくするようにその誤差情報を逆伝播させていきます。
基本的に、ニューラルネットワークベースのモデルで使われます。
導出は少しややこしいですが、以下の記事で導出と実装を紹介しています。
【関連記事】
・機械学習の要「誤差逆伝播学習法」を解説・実装してみる!
サポートベクタマシン: Support Vector Machine (SVM)
サポートベクタマシンも、しばしば強力な分類学習手法として用いられます。
これも特徴空間に決定境界を引く手法なのですが、たとえ線形分離不可能な問題でも、線形分離可能な次元へ写像してしまうことで決定境界を計算することができます。
境界面の引き方は単純で、違うラベルで一番近いデータに対し、マージンを最大化するように、ちょうど真ん中に決定境界を引くというもの。
SVMは、未知のデータに強いと一般的に言われています。
さいごに
今回は、人工知能や機械学習分野でよく聞くワードについて、簡単ではありますが解説をしてみました。
なんとなくそれぞれの単語のイメージが掴めたのではないでしょうか?
これで、あなたは、人工知能の大枠を掴むことができたと言えるでしょう!
また、さらに深掘りをしたくなったら、本ブログの他の記事を参考にしてみてくださいね!
こちらの記事もオススメ!
2020.07.28機械学習 特集知識編人工知能・機械学習でよく使われるワード徹底まとめ!機械学習の元祖「パーセプトロン」とは?【人工知能】ニューラルネ...
2020.07.30Python 特集実装編※最新記事順Responder + Firestore でモダンかつサーバーレスなブログシステムを作ってみた!P...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
「好きを仕事にするエンジニア集団」の(株)ライトコードです! ライトコードは、福岡、東京、大阪、名古屋の4拠点で事業展開するIT企業です。 現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。 いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。 システム開発依頼・お見積もり大歓迎! また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」を積極採用中です! インターンや新卒採用も行っております。 以下よりご応募をお待ちしております! https://rightcode.co.jp/recruit