人工知能超入門

# この記事の対象となる方

この記事は人工知能の超入門編となっていて、

・人工知能にちょっとでも興味のある方
・人工知能をこれから勉強しようと思っている方
・G検定を勉強中の方（全体の流れを掴むのが目的のため色々省いています）
などを対象としております。

機械学習自体は参考書などで独学し個人のWebサービス開発などで取り入れたりなどはしていたのですが基礎から勉強した訳では無かったので、今回基礎からしっかりと理解するために記事を書いてアウトプットしながら学習を進めていこうと思いました。

# この記事で触れる内容

勉強を進めながら進展具合で、何回かに分けて記事を書いていこうと思います。

今回の記事では、

・人工知能、機械学習とは
・機械学習の歴史
・機械学習の種類、何が出来るか

など、各アルゴリズムを詳しく見ていく前に全体の流れを掴めるようにまとめていこうと思います。
そして、次回以降からはもっと詳しい内容に入っていければと思ってます。

それではいきます！

# 人工知能とは

人工知能とはAI（Artificial Intelligence）と呼ばれるもので一般的には

> 人間の知能をコンピュータを用いて人工的に再現したもの

とされています。

人工知能という言葉自体は、1956年にアメリカのダートマス大学において行われたダートマス会議という研究発表会で、
人工知能研究の第一人者であるジョン・マッカーシーという人物が会議の提案書において、初めて使ったとされています。

しかし実際人工知能の定義は、専門家の中ですら異なっていて明確な定義はされていないようです。

## 専門家による人工知能の定義

専門家による人工知能の定義がどうされているか見てみると、

>|研究者|定義|
>|:--|:--|
>|<strong>中島秀之</strong><br>公立はこだて未来大学学長|人工的に作られた、知能を持つ実体。あるいはそれをつくろうとすることによって知能自体を研究する分野である|
>|<strong>西田豊明</strong><br>京都大学大学院<br>情報学研究科教授|「知能を持つメカ」ないしは「心をもつメカ」である|
>|<strong>溝口理一郎</strong><br>北陸先端科学技術<br>大学院大学教授|人工的に作った知的な振る舞いをするもの（システム）である|
>|<strong>長尾真</strong><br>京都大学名誉教授<br>前国立国会図書館長|人間の頭脳活動を極限までシュミレートするシステムである|
>|<strong>堀浩一</strong><br>東京大学大学院<br>工業系研究科教授|人工的につくる新しい知能の世界である|
>|<strong>浅田</strong><br>大阪大学大学院<br>工業研究科教授|知能の定義が明確でないので、人工知能を明確に定義できない|
>|<strong>松原仁</strong><br>公立はこだて未来大学教授|究極には人間と区別がつかない人工的な知能のこと|
>|<strong>武田英明</strong><br>国立情報学研究所教授|人工的に作られた知能を持つ実体。あるいはそれを作ろうとすることによって知能自体を研究する分野である|
>|<strong>池上高志</strong><br>東京大学大学院<br>総合文化研究科教授|自然に我々がペットや人に接触するような、情動と冗談に満ちた相互作用を物理法則に関係なく、あるいは逆らって、人工的に作り出せるシステムを、人工知能と定義する。分析的に分かりたいのではなく、会話したり付き合う事で談話的に分かりたいと思うようなシステム。それが人工知能だ|
>|<strong>山口高平</strong><br>慶應義塾大学理工学部教授|人の知的な振る舞いを模倣・支援・超越するための構成的システム|
>|<strong>栗原聡</strong><br>電気通信大学大学院<br>情報システム学研究科教授|工学的に作られる知能であるが、その知能のレベルは人を超えているものを想像している|
>|<strong>山川宏</strong><br>ドワンゴ人工知能研究所所長|計算機知能のうちで、人間が直接・間接に設計する場合を人工知能と呼んで良いのではないかと思う|
>|<strong>松尾豊</strong><br>東京大学大学院<br>工学系研究科准教授|人工的に作られた人間のような知能、ないしはそれをつくる技術|

>「人工知能学会詩」より引用。

とされており、専門家の間でも定義は異なっていますが、一貫して人工的に作られた人間のような知能という事は言われているため、「人間の知能をコンピュータを用いて人工的に再現したもの」として認識していれば問題はないと思われます。

## 人工知能の大まかな分類

人工知能の分類方法として、
・強いAI（汎用型人工知能）
・弱いAI（特化型人工知能）
というように分ける事が出来ます。

これは、1980年にアメリカの哲学者ジョン・サール氏が論文内で提示した区分です。

#### 強いAI（汎用型人工知能）

人間の様な知識を備え、特定の処理だけでなく汎用的な処理を行えるような人工知能。
汎用型人工知能を実現するにおいては解決出来ていない問題が複数あり、現在でも実用化には至っていないようです。


#### 弱いAI（特化型人工知能）

何か1つの事に特化した人工知能。
既に人間を超える知能が開発されている分野であり、囲碁や将棋といったボードゲームでは人工知能が人間のプロプレイヤーに勝利し話題になりました。自動運転などの技術もこちらの分野です。

現在AIと呼ばれて、ビジネスなどで広く活用されているものは、この弱いAI（特化型人工知能）を指します。


そして、現在の世の中で人工知能と呼ばれているものを整理すると以下のように分類が出来ます。

>|レベル|内容|実例|
>|:--|:--|:--|
>|レベル1<br><em><strong>シンプルな制御プログラム</strong></em>|全ての設定があらかじめされているもので、マーケティング的に人工知能と名乗っているだけ|エアコン、洗濯機など|
>|レベル2<br><em><strong>古典的な人工知能</strong></em>|データなどを活用し多彩な動きや判断が出来るもの|チャットbot、掃除ロボットなど|
>|レベル3<br><em><strong>機械学習を取り入れた人工知能</strong></em>|自動的にサンプルデータを基に入力と出力の関係を学習するもの|検索エンジン、交通状態予測など|
>|レベル4<br><em><strong>ディープラーニングを取り入れた人工知能</strong></em>|学習に必要な特徴量を自ら学習するもの|画像認識、音声認識、自動運転など|
 
> [人工知能は人間を超えるか](https://www.amazon.co.jp/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD%E3%81%AF%E4%BA%BA%E9%96%93%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%81%8B-%E8%A7%92%E5%B7%9D%EF%BC%A5%EF%BC%B0%EF%BC%B5%EF%BC%A2%E9%81%B8%E6%9B%B8-%E6%9D%BE%E5%B0%BE-%E8%B1%8A-ebook/dp/B00UAAK07S) より引用

この中のレベル4が現在もっとも熱い領域となっていて、様々な国や企業が投資している領域となっています。
また、研究機関などによっては、レベル5として「人間と同じ様な知能を持つ人工知能（汎用型人工知能）」を設ける場合もあるようです。

# 人工知能研究の歴史

人工知能開発のブームは、1950年代頃から波は起きていたようで、以下の様な流れを辿ってきました。

|名称|年代|出来事|
|:--|:--|:--|
|第1次ブーム<br><em><strong>探索・推論の時代</strong></em>|1950年後半~1960年頃|ダートマス会議が開催され人工知能と言う言葉が浸透した。探索・推論により特定の問題を解決出来るようになった事でブームが起きたが、現実問題のような複雑な問題に対応出来ない事が分かると次第にブームは冷めた。|
|第2次ブーム<br><em><strong>知識の時代</strong></em>|1970年前後~1990年頃|専門家の知識を取り入れたエキスパートシステムと呼ばれる特定の分野で特化した性能を出す事が出来るシステムが開発された。しかし必要となる情報を全て入力させる事が必要なのと管理するのが大変だったり、特定の分野でしか活用出来ないと分かると、次第にブームは冷める。|
|第3次ブーム<br><em><strong>機械学習・特徴表現学習の時代</strong></em>|2000年頃~現在|Webの爆発的な普及により蓄積されたビックデータを活用した機械学習の実用化が進んだり、ディープラーニングの登場によりブームが来る。|

## 第1次ブーム

### 探索・推論

第1次ブームは、探索・推論の研究が進み特定の問題を解けるようになったことで起こりました。
推論は人間の思考回路を記号で表現し実行するもので、基本的には探索と似ているので省きます。

探索の中で有名な手法として、
・幅優先探索
・深さ優先探索　という手法が存在し、これらはどのように探索を進めるかというアルゴリズムです。

例として迷路の経路を探索する事を想定すると、まず以下の図の様にパターンを並べます。

> ![スクリーンショット 2022-01-28 131509.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/b3179dd5-e7d3-2e64-1c79-18ecb13995b5.png)
>
> [人工知能は人間を超えるか](https://www.amazon.co.jp/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD%E3%81%AF%E4%BA%BA%E9%96%93%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%81%8B-%E8%A7%92%E5%B7%9D%EF%BC%A5%EF%BC%B0%EF%BC%B5%EF%BC%A2%E9%81%B8%E6%9B%B8-%E6%9D%BE%E5%B0%BE-%E8%B1%8A-ebook/dp/B00UAAK07S) より引用

このように全てのパターンを図のように並べたものを「探索木」と呼びます。

#### 幅優先探索

上記の図だと探索順番は「S→D→A→H→I→B→C→E→J→F→G」と言う風に進んでいきます。

![スクリーンショット 2022-01-29 190815.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/e0319054-f0a0-ff13-afa2-b366241e62a8.png)

幅優先探索は同じ階層を出発点から近い順に探索し、探索した場所の情報を全て保持しながら次の層へと探索していきます。
そのため必要なメモリ量は多いが、最短距離で答えに辿り着くルートを必ず見つける事が出来ます。

#### 深さ優先探索

上記の図だと探索順番は「S→D→H→E→J→I→A→B→C→F→G」と言う風に進んでいきます。

![スクリーンショット 2022-01-29 191058.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/cf5b35af-ea35-addb-55be-62732ea1ff66.png)

深さ優先探索では、とにかくいけるところまでいって行き止まりになったら1つ手前に戻って再度探索を行います。
答えが見つからなければ探索し直すだけなのでメモリ量はあまり必要ではないが、解が見つかる時間が保証出来ません。
また、見つかったとしてもそれが最短距離ではない可能性があるという特徴があります。

探索はこのように最適な答えをコンピュータに発見させるアルゴリズムとして第1次ブームにおける人工知能研究に貢献しました。

### ロボットの行動計画

探索木を使って「プランニング」と呼ばれるロボットの行動計画を作る事も出来ます。
これは、「前提条件」「行動」「結果」という3つの組み合わせで記述する「STRIPS」と呼ばれるシステムが有名です。

このSTRIPSを表す例として、<strong>「家の中にいるロボットに、家の外のポストから郵便物を取れ」</strong>と命令を与えるとすると
1. 家の中にいる（前提条件）
2. ドアを開けると（行動）
3. ドアが開いた状態になる（結果）

1. ドアが開いた状態で（前提条件）
2. 家の外に移動すると（行動）
3. 家の外にいる状態になる（結果）

といった事をあらかじめ記述しておけば、その通りに動くというものです。

また、このプランニングを使って「SHRDLU」という人工知能研究初期の研究開発プロジェクトも行われました。

> SHRDLU

> SHRDLUとは、人工知能研究初期の研究開発プロジェクトである。1968年から1970年にかけて、テリー・ウィノグラードによって実施された。 
> コンピューターの中に仮想的に「積み木の世界」を構成し、そこに存在するいくつかの物体――ブロック、円錐、球など――を英語で指示を与えることで積み上げたり下ろしたり動かすことができる。自然言語により仮想世界の操作を行う事ができる。
> 
> Wikipediaより引用

開発された当時はロボットを実際に動かすまでは至っていなかったものの、上記の様な仮想的な世界においてプログラムを動かす事が出来たみたいで、現在に至るまでの人工知能の研究に大きく貢献したそうです。

このSHRDLUという研究開発プロジェクトにおける成果は、後の「Cycプロジェクト」という<strong>全ての一般常識をコンピュータに取り込もうと言うプロジェクト</strong>にも引き継がれていきます。

### ボードゲーム

ボードゲームの分野でも探索木を用いる事で良い手を探索する事が出来ましたが、対戦相手が存在する事で組み合わせの数が天文学的な数字になってしまうため、なかなか最後まで探索出来ないという問題がありました。

|名称|組み合わせ|裏返し等|
|:--|:--|:--|
|オセロ|8*8の白黒 10の60乗通り|裏返し有|
|チェス|8*8の白黒6種 10の120乗通り|無し|
|将棋|9*9の8種類 10の220乗通り|成りや取った駒を使える|
|囲碁|19*19の白黒 10の360乗通り|無し|

そこで「コスト」という考え方を導入する事で打つ手の探索する数を減らす事が出来ました。
コストという概念は、「ある局面で自分がどの程度有利な手かを表すスコア」のようなものです。

このコストを用いたボードゲームの代表的な探索手法として「Mini-Max法」というものがあります。

#### Mini-Max法

この手法は、自分が指すときにはスコアが最大になるような手を打ち、相手が指すときにはスコアが最小（つまり自分にとって不利な手）を打つものだという事を前提としたものです。

以下、Wikipediaより引用です。

> Mini-Max法
>
> ミニマックス法（みにまっくすほう、英: minimax）またはミニマックス探索とは、想定される最大の損害が最小になるように決断を行う戦略のこと。将棋、チェス、リバーシなどといった完全情報ゲームをコンピュータに思考させるためのアルゴリズムとしても用いられるが、元々はフォン・ノイマンが中心となって数学的に理論化されたゲーム理論において、打ち手を決定する際に適用されるルールの一つ。[1] これに対し、想定される最小の利益が最大になるように決断を行う戦略はマクシミン戦略という。 

また、Mini-Max法による探索を出来るだけ少なくする手法として、「αβ法」という探索アルゴリズムがあります。これは計算しなくてもいい部分を事前に探索しないようにする事で、探索を少なくできるアルゴリズムです。

実際に、Mini-Max法の処理の流れを追ってみると次のようになります。

①. まず矢印の様に深さ優先探索で左から探索していきます。
![スクリーンショット 2022-01-29 195232.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/3d452a29-c66b-939d-edbf-ad1c63c3f746.png)

②. するとGが1というスコアになったので、暫定的にAとCも1というスコアになります。
![スクリーンショット 2022-01-29 200528.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/69c366fd-6fca-290c-1cb0-79fd10cc480c.png)

③. 次にHに探索を進めます。
![スクリーンショット 2022-01-29 200637.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/cf82cf95-2ac2-6092-a2f7-d34ff7b01178.png)

④. Hは5という結果になりました。Mini-Max法では自分のターンではスコアが大きい方を選ぶので3手目（自分）ではHを選びます。
そうするとAとCの暫定的スコアが5というスコアで更新されます。
![スクリーンショット 2022-01-29 200750.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/2802dd9b-afbf-52c5-3f01-7b68354103e8.png)

⑤. このようにして次はIへ探索を進めます。すると、Iは7というスコアになりDも暫定的7というスコアになりましたが、ここでは1手目のAのスコアは更新されません。
![スクリーンショット 2022-01-29 202715.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/9c502da0-bffd-6946-ad06-2008b0becc17.png)

何故ならこのスコアと比較されるのは2手目の相手のスコアで、Mini-Max法では<strong>相手は自分にとって不利な手を打つ（スコアが小さいほう）</strong>と仮定されているからです。つまり、自分が1手目で左のAの盤面を打ったら相手はCの手（スコアが5の小さい方）を打つという事です。
なので、Mini-Max法のアルゴリズム上では相手がスコア7（D）の手を打つことは考えられないので、Jの探索は無駄なので省きます。

![スクリーンショット 2022-01-29 212208.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/610ecf32-ac51-93ca-509c-bcc91e7f1022.png)
このようにスコアが最小のモノを選ぶ過程で、既に出たスコアより大きいノードが現れた時点で探索を辞める手法を<strong>βカット</strong>と呼びます。

⑥. 左側の探索が終わったので、同じように右側の探索を進めます。

![スクリーンショット 2022-01-29 212657.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/b7fde1a4-af57-4276-6bf3-e819070e6fe2.png)

BとEは暫定的に3というスコアになる。
![スクリーンショット 2022-01-29 212817.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/9bc2481d-6775-76e4-31dc-ba146294a44c.png)
Lへと探索を進めます。
![スクリーンショット 2022-01-29 212944.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/68ad5468-bc05-6932-06c9-d7fb48fe0050.png)

-2というスコアになったが、3手目は自分のターンなので最大値が選ばれるため更新されず最終的なスコアは3になる。
![スクリーンショット 2022-01-29 213159.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/fffdabf5-9447-474b-7f9e-6a5a1421605b.png)

この時点で、これ以降の相手のターンである2手目のスコアは必ず3以下になる事が分かります。
これは相手はスコアが小さくなる手を打つ事を前提としているため、Fが3より大きいスコアになったとしても相手はEの手を選ぶはずだからです。（Fが3より小さくなったらFを選びますが、それでも結果は同じ）
なので右側のスコアは3以下という事が確定されます。そうなると1手目で自分が打つ手はスコアの高い左側になり、これ以降の探索は無駄なのでしないようにします。
![スクリーンショット 2022-01-29 214708.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/13d95613-87e3-a3d5-de6d-3304c55ab0e5.png)
このように最大のスコアを選択する際に、スコアが小さいノードが現れた時点で探索を辞める手法を<strong>αカット</strong>と呼びます。

Mini-Max法は以上のように処理が進んでいくアルゴリズムです。

#### モンテカルロ法

囲碁の様なボードゲームになると探索する組み合わせが果てしない数になり、探索するノード数が莫大になってしまっていました。
探索が深くなればなるほどコンピュータのスペックも必要になってきたりして効率良く全て探索する事は不可能です。

ゲーム序盤では組み合わせの数が膨大で全ての手を済み切る事はほぼ不可能ですが、ゲーム後半は組み合わせ数が少なくなってコンピュータはほぼミスしなくなるため、序盤から中盤でどのように戦うかが重要です。それでもコンピュータが人間のプロプレイヤーに勝つ事は少ないのが現状でしたが、この分野の研究が進むとどうやらその理由は<strong>探索数が多すぎる</strong>のと、<strong>スコア評価の仕方自体に問題がある</strong>と分かってきました。
この当時のスコア評価方法は過去の膨大な戦歴からその手のスコアを評価するというものが主流で、この評価の仕方でそのソフトの強さが決まっていました。

それに対してモンテカルロ法では、<strong>ゲームがある局面まで来たら交互にランダムに手を指し続け（完全にランダムではなく工夫されている）ゲームを終局させる</strong>というやり方を取りました。このようにゲームを終局させる事を<strong>プレイアウト</strong>と呼びます。
プレイアウトを複数回行う事で、どの方法が一番勝率がいいのかを計算でき、この方法が結果的には以前のスコア評価方法よりも勝率が高い事が分かりました。

この手法を取り入れた事により9*9の囲碁でプロプレイヤーを破るソフトも出てきましたが、19*19の囲碁では依然として歯が立たない状況が続きました。その状況は、数十年後に起きる第3次ブームでディープラーニングが登場するまで続きます。

### 第1次ブームの終わり

以上のように探索・推論により「トイプロブレム」と呼ばれる明確なルールの中で定義された上述のような問題は解く事が出来ましたが、現実のように複雑な問題は解けないと分かってきました。
また、この頃既にディープラーニングの基のニューラルネットワークの基礎とも言える「単純パーセプトロン」が開発されていましたが、人工知能の科学者であるマービン・ミンスキーが、単純パーセプトロンの特定条件下における限界を示した事も重なり、第1次ブームは次第に冷めていきました。

## 第2次ブーム

第2次ブームは、コンピュータに大量の専門知識を入れる事で専門家の様に問題解決が出来るプログラム「エキスパートシステム」が生まれた事により起こりました。これはいわゆる弱いAIと言われるもので、何かの分野に特化した人工知能の事です。

### 対話システムELIZA

1966年には対話システム「ELIZA」がジョセフ・ワイゼンバウムという人物により開発されました。
これは精神科のセラピストのような振る舞いをする対話システムで、単純なオウム返しのような質問や返答をするものでしたが、人間と錯覚してしまう人も少なくなかったほど衝撃的な発明だったそうです。
また、このELIZAと対話をしてあたかも人間だと対話しているような錯覚は「ELIZA効果」とも呼ばれました。

### エキスパートシステム

1960年代に開発された<strong>DENDRAL</strong>という未知の有機化合物を特定するシステムが世界初のエキスパートシステムだと言われています。
1970年代には、<strong>MYCIN</strong>という感染症の専門医の様に振る舞うプログラムが開発されました。
このシステムはDENDRALから派生したもので、69%の確率で正しい処方を行う事ができ、専門医による処方が80％正しい事と比較すると専門医よりは正確ではないが、専門出ない人よりは遥かに正確な処方が行えたそうです。

こういったシステムが次々と研究開発されていく中で、以下の様なエキスパートシステムの課題が浮き彫りになっていきます。

#### エキスパートシステムの課題

##### 高コストな作業量

専門的な知識をコンピュータに取り入れる上で専門家に対してのヒアリングを行わなくてはいけない事であったり、コンピュータに取り入れた膨大な量の知識を一貫性を持たせるように管理しなくてはいけない事が高コストであった。

##### 知識の記述方法

更に広い範囲の知識を取り入れようとした時に、知識の関係性や意味の記述の仕方や、その管理方法が難しくなる事が分かった。

このような問題が浮上した事で、知識表現の分野の研究が盛んになっていきました。
この頃行われた知識表現の研究で代表的なものは「意味ネットワーク」と「オントロジー」という分野の研究です。

#### 意味ネットワーク（セマンティックネットワーク）

意味ネットワークとは、人間が意味を記憶する際の構造を表したモデルの事で、セマンティックネットワークとも呼ばれます。
これは概念をノードで表してそれらをリンクと呼ばれる線で結んだ以下の図の様なネットワークとして表されます。

> ![スクリーンショット 2022-01-29 222031.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/3084586c-4880-04d7-ecee-ddf0271da70e.png)
>
> [人工知能は人間を超えるか](https://www.amazon.co.jp/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD%E3%81%AF%E4%BA%BA%E9%96%93%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%81%8B-%E8%A7%92%E5%B7%9D%EF%BC%A5%EF%BC%B0%EF%BC%B5%EF%BC%A2%E9%81%B8%E6%9B%B8-%E6%9D%BE%E5%B0%BE-%E8%B1%8A-ebook/dp/B00UAAK07S) より引用

ここで「is a」は継承関係を表していて、「part of」などは属性関係を表しています。
このように意味ネットワークはこの世界に関する概念の関係性をネットワーク構造で表すモデルとして活用されました。

#### オントロジー

これは哲学用語では存在論という意味ですが、人工知能分野では<strong>「概念化の明示的な仕様」</strong>と定義されている言葉です。
知識表現の研究の中で、コンピュータに知識を理解させるにはどういう風に表現したらいいかという課題が存在し、意味ネットワークでも概念の関係性はネットワーク構造で表現する事が出来ましたが、明確な定義が決まっていませんでした。
そのような問題があったため知識を体系化するための研究が進み、オントロジーが研究されていきました。
オントロジーは知識を記述する際に用いる言葉やその意味、関係性などを定義し、コンピュータが知識を繋げて理解するような技術の発展に貢献しました。

##### 共通語彙の階層定義

オントロジーの中で定義されている事の1つとして、語彙や関係性の階層定義があります。これは以下の様に定義されているようです。

例として、
・<em>「原付」と「原動機付二輪車」</em>
→これらは同じもの（is-a)で、推移律が成り立つ。

※推移律
AとBの関係が成り立っていてBとCに関係が成り立っていれば、AとCにも自動的に関係が成り立つというもの。

・<em>「携帯」と「iphone」</em>
→iphoneは携帯に含まれる（part-of）。推移律は成立するとは限らない。

・<em>「マウス（パソコンの）」と「マウス（ネズミ）」</em>
→これらは違うもの

更にこれらを明確に結び付けるためにはより詳細な定義をする必要があるので、広範囲かつ詳しい関係性の定義をしていきます。

また、オントロジーのアプローチ方法としては2種類あり、以下の様に定義されています。

##### ヘヴィーウェイトオントロジー

人間が持つ知識を正しくAIに教えようとするアプローチで、構成要素や意味などの正当性について哲学的な考察が必要だったりするので、時間とコストがかかります。

##### ライトウェイトウェイトオントロジー

完全に正しいものでなくても使えるものであれば良いという考え方で、構成要素の関係性について深く考察を行わないでAIが関係性を見つけるようなアプローチです。このような特性からウェブ上などから知識を収集するような技術と相性が良く、ウェブマイニングやデータマイニングで利用されています。
近年で活用された有名な例としては、2011年にアメリカのクイズ番組で歴代チャンピオンに勝利した「ワトソン」で、これはウィキペディアの記述からライトウェイトオントロジーを生成してそれを解答に使っているようです。ワトソンは質問の意味を理解している訳ではなく、質問に含まれるキーワードに関連しそうな答えを高速に検索しているだけの仕組みみたいですね。

##### セマンティックWeb

これはWebサイト上の情報を定義された一定の形式により意味（セマンティック）を持たせる事でコンピュータが、サイトやページを横断して情報を比較したり統合したり出来るようにする技術です。これによりWeb自体を巨大なデータベースとみなし、必要とするデータをソフトウェアが自律的に収集して組み合わせるというような事を実現しようとするものです。

> 現在のワールド・ワイド・ウェブ上のコンテンツは主にHTMLで記述されている。HTMLでは文書構造を伝えることは可能だが、個々の単語の意味をはじめとする詳細な意味を伝えることはできない。これに対し、セマンティック・ウェブはXMLによって記述した文書にRDFやOWLを用いてタグを付け加える。この、データの意味を記述したタグが文書の含む意味を形式化し、コンピュータによる自動的な情報の収集や分析へのアプローチが可能となると期待されている。オントロジーを扱う階層まではW3Cにより標準化されているが、それ以上の階層の開発は難しいため、実現と標準化には長期間掛かると予想されている。また、既存のWebサイトに対するメタデータ付与の作業が必要であるため、Web全域への普及に関しても長期間掛かると予想されている。
>
> Wikipedia より引用

これによると、意味の記述にオントロジーが使われているみたいですね。

##### Linked Data

これもティム・バーナーズ・リー氏により提唱されたものでWikipediaによると

> セマンティック・ウェブ分野で検討されてきた知識の構造化手法を既存の大規模データに適用し、コンピュータで処理可能なデータを普及させるための一連の技術ならびに方法論の総称である。 

とされており、セマンティックWebがコンピュータにWeb上の知識を自動的に処理させようとするのに対して、Linked Dataはそのような知識のネットワーク構造を定義したものの総称ようです。その定義の内容は以下のようになっています。

1. データの識別子としてURIを利用する。
2. 参照出来るようにHTTP URIを使用する事。
3. URIにアクセスされた時に標準的なフォーマット(RDFなど)で提供する事。
4. 更に情報を発見出来るように、データには他のURIへのリンクを含む事。

また、<strong>Linked Open Data（LOD）</strong>はこのLinked Dataの考え方に基づいて、様々なデータをオープンデータとして公開するプロジェクトやサービスの事を指します。

##### ナレッジグラフ

ナレッジグラフはセマンティックWebの技術を使って体系的に表現された知識のネットワークやグラフ構造の事を指します。ナレッジグラフの活用により、これまで機械学習で処理が難しかった構造化されていなかったデータの学習が可能になるとされています。
近年ではGoogleの検索結果の表示にもナレッジグラフが導入されました。ナレッジパネルと呼ばれ検索結果として右側にボックスとして表示される機能で、表示させるにはいくつかの条件があるみたいで、興味がある方は調べてみると面白いと思います。
また、近年ではLinked Dataなどの事もナレッジグラフと言う事もあるみたいです。

##### Cycプロジェクト

この頃から一般常識をコンピュータに取り入れようというプロジェクトである「Cycプロジェクト」が開始され現在も研究は続いています。
Cycプロジェクトはダグラス・レナートという人物により開始されたプロジェクトで、一般知識が備わったコンピュータが人間と同等の推論を行える事を目的とするプロジェクトでヘヴィーウェイトオントロジーのアプローチを用いたものです。将来的には、ニューラルネットワークとは別のアプローチで常識的な推論が可能になると期待されています。

##### 第五世代コンピュータ計画

この頃日本では当時の通商産業省（現経済産業省）が主導で人工知能開発のプロジェクトが立ち上がり巨額な費用が投じられました。1982年からの10年間という期間に行われたプロジェクトでしたが、ウェブの普及前と言う事もあり十分なデータ量も無いためか大した成果は出なかったそうです。

### 第2次ブームの終わり

第2次ブームでは知識を入れた事で何かに特化した人工知能は開発出来ましたが、それに伴い高コストなメンテナンスが必要だったり、更なる発展のためには知識の記述方法が難しい事が分かった事で悲観的な意見が広まり、ブームは次第に終わっていきます。

## 第3次ブーム

1990年初頭に最初のWebページが作成され、1990年代後半にはGoogleの検索エンジンが登場しました。
それにより世の中にWebが普及し大量のデータが溜まったことにより、それらのビックデータを使った機械学習の研究開発が盛んになっていきました。

また、2012年には「ILSVRC」(ImageNet Large Scale Visual Recognition Challenge)という画像認識の精度を競う大会で、ディープラーニングを使ったチームが圧勝した事により、ディープラーニングブームが訪れます。
その大会では、当時画像認識に機械学習を用いるのは常識的にはなっていましたが、その特徴量（注目すべきデータの特徴）を決めるのは人間自身でした。
それに対しディープラーニングはその特徴量自体を学習出来るため、機械学習より優れた精度を出す事が出来ました。
これ以降、その大会のチャンピオンは全てディープラーニングを利用したチームが優勝しています。

### ディープラーニングとは

ディープラーニングはニューラルネットワークという人間の脳の神経回路の一部を模したモデルを多層に重ねたものです。
それではニューラルネットワークとは何なのか。

### ニューラルネットワーク(Neural Network:NN)とは

> 人間の脳にはニューロンと呼ばれる神経細胞が存在し、これは100億から1000億ほどあると言われているそうです。
> ニューロンが互いに結びつく事で神経回路という巨大なネットワークが構成されていて、何らかの信号を受け取ると電気信号に変換され次のニューロンへ電気信号が渡され神経回路を駆け巡ります。次のニューロンに電気信号が伝達される際に、どのように伝達するかなどを制御する事によって脳はパターンを認識しています。
> この生物学的ニューロンの伝達を人工的に模したモデルがニューラルネットワークと呼ばれるものです。
>
> 一部「深層学習教科書 ディープラーニング G検定」より引用

この説明から分かる通り、ニューラルネットワークは人工的に人間の脳の神経回路の一部を模したモデルである事が分かります。

### NNの元祖、単純パーセプトロン

ニューラルネットワークの元祖とも言われる<strong>単純パーセプトロン</strong>と言うモデルは、実は1958年に米国の心理学者のフランク・ローゼンプラットという人物によって提案されており第1次ブームの起因ともなっていました。

これは下図のように「入力層」と「出力層」のみで構成されたモデルです。

![スクリーンショット 2022-01-30 105645.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/79c7f8d8-a7a5-fa8d-530d-47af08953f08.png)

この単純パーセプトロンの中間出力yを式で表すと、

![スクリーンショット 2022-01-30 113618.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/11ae97af-4b4f-0529-114c-8df3be26923f.png)

となります。
この「重み」というのはどの入力を重要視するかという値で、上記の式を見れば分かる通り入力に掛けている値になるので重要視したい入力に対しては重みを大きく設定します。
「バイアス」はモデルに偏りを持たせるためのパラメータで、重みと同様に値を微調整するような役割を果たしています。

そしてこの単純パーセプトロンの最終出力のf(y)は中間出力yに対して<strong>活性化関数f</strong>という関数を掛けた値になります。

![スクリーンショット 2022-01-30 114149.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/265e01bc-9846-9f66-cf7f-40abbcf74ccd.png)

単純パーセプトロンでは後述する「誤差逆伝播法」という訓練アルゴリズムが登場するまでは活性化関数は<strong>ステップ関数</strong>という関数が使われていましたが、それ以降は<strong>シグモイド関数</strong>という関数が使われるようになりました。これは「誤差逆伝播法」で誤差の勾配を計算する際に活性化関数を微分するためで、微分出来る関数としてこの関数が使われるようになりました。

#### ステップ関数

ステップ関数はxが0未満の場合は0となり、xが0以上の場合は1となる単純な関数です。
単純なのでここでは詳細は省略します。

#### シグモイド関数

シグモイド関数の数式やグラフは以下の様になってます。

![スクリーンショット 2022-01-30 115248.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/9da97848-77b3-d508-1e1d-62ccbe40e59b.png)

![スクリーンショット 2022-01-30 112244.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/075e49a3-9afb-8b07-43bb-7561daf52fa8.png)

シグモイド関数は上図のように任意の値を0から1の値に写像するので、出力の値が0.5以上なら正例、0.5未満なら負例と設定しておく事でデータを2種類に分類する事が出来ます。この閾値は基本的には0.5ですが、タスクによって調節も可能です。

また、データを2種類より多く分類したい場合（多クラス分類）は活性化関数に<strong>ソフトマックス関数</strong>を使用します。

#### ソフトマックス関数

ソフトマックス関数は、入力の数からなるベクトルを生成し、それらが合計したら1になるような値を出力してくれる関数です。出力の総和が1になる事でそれらをそれぞれの確率として解釈する事で多クラス分類を可能にしています。数式は以下の様になります。

![スクリーンショット 2022-01-30 133333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/7227a5e4-15da-558e-33f4-304ef7d5b785.png)

このようにn個の入力を受け取りn個の出力をする関数となっており、入力の個数や入力の値によってグラフの形は変わります。
このeはシグモイド関数でも出てきた<strong>ネイピア数</strong>（自然対数の底で別名オイラー数）と呼ばれる数学定理の一つで、2.718281・・・と続く無理数で、これを使う事により微分計算がしやすいというメリットがあります。

以上のように単純パーセプトロンでも、分類問題は解く事は出来ました。
しかしこれはグラフ上で単純な直線によって分離出来るような問題しか解く事が出来ません。

例えばANDゲートなら以下の様に線形分離する事が出来ます。

![スクリーンショット 2022-01-30 135641.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/dbeaa7c5-dfb6-1c26-11b7-0c173db3c952.png)

ANDゲートの他にORやNANDゲートなども単純な線形分離で解けるので単純パーセプトロンでも分類する事が出来ます。
しかし、XORゲートになると以下の様なグラフになり単純な直線では分離出来ないので、単純パーセプトロンでは分類出来ない事が分かりました。

![スクリーンショット 2022-01-30 135608.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/e6634fdc-d003-203a-ccd5-2a66d9fe5188.png)

このように単純パーセプトロンはモデルの構造が単純すぎたため、特定条件下では全く使えないと分かった事によりニューラルネットワークの研究は下火となっていました。

### MLP(Multi-layer Perceptron)の登場

上述の単純パーセプトロンの入力層と出力層の間に層を複数加える事で多層としたものが、MLP(Multi-layer Perceptron)と呼ばれるものです。
これが言わゆる<strong>深層学習（ディープラーニング）</strong>で、隠れ層（中間層）と呼ばれる層を追加した事により、モデルの表現力が上がり様々な問題を解決出来るようになりました。

![スクリーンショット 2022-01-30 130328.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/d788577c-0070-a8e8-0789-d63d04c233c0.png)

このMLPのニューロンの数や中間層（隠れ層）の数はもちろんカスタマイズが可能で、現在はこの基本的なモデルを発展させた様々なモデルが考えられており、
・画像認識に特化したモデル（CNN）
・時系列データに特化したモデル（RNN）など様々な用途に合わせたものが開発されています。また、これらの特化したモデルの中でも様々な種類のモデルが考えられており、隠れ層の数やニューロンの数が違ったり、使用する活性化関数やその他の関数などが工夫されてたりします。

このMLPは以前から考えられていた手法でしたが、「多層化しても学習精度が上がらない」という問題があり、実用化には至っていませんでした。

### ディープラーニングが実用化に至った背景

そもそもニューラルネットワークを多層化するという試みはニューラルネットワーク研究の初期から行われてきましたが、多層にすると精度が上がらなくなるという問題がありました。これはディープラーニングの学習手法である「誤差逆伝播法」というアルゴリズムの特性上起こる問題でした。
誤差逆伝播法は1986年に開発された訓練アルゴリズムで、仕組みとしては<strong>出力層から出力と実際のデータを比較していき、出力が実際のデータに近づくように重みやバイアスを微修正していくという処理を出力層から入力層に向かって行う</strong>ものです。

これが、多層にした事で出力層から入力層に誤差が正しく伝わる前に消失してしまい、入力層付近で誤差を修正出来なかったため精度が上がらないという問題がありました。

これは隠れ層の活性化関数として使われていた「シグモイド関数」の特性上の問題で、誤差が伝達される際にこの活性化関数の微分が掛かる事により、次の層に伝わっていく誤差がどんどん小さくなる事で誤差の勾配が消失してしまうというのが直接の原因で、これは<strong>勾配消失問題</strong>と呼ばれ、ニューラルネットワークを多層化していく上で付きまとう問題でした。

> ![スクリーンショット 2022-01-30 141108.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324522/12054004-27f1-9992-c870-bdd8ea98e4e2.png)
>
> 深層学習教科書 ディープラーニング G検定 より引用

上図の様にシグモイド関数を微分した導関数は最大値が0.25にしかならないため、階層が深くなるごとに伝播していく誤差が少なくなり、入力層に辿り着く事には0に近い値になってしまう事が原因でした。

この勾配消失問題は、2006年にトロント大学のジェフリー・ヒントンという人物により提唱された「オートエンコーダ」という手法を使い、各層の重みを最適化する「事前学習」と言われる工程を挟む事で解決する事が出来ました。

しかし現在ではこの事前学習を行わずとも、勾配消失問題の直接の原因であった活性化関数を工夫し一気にネットワーク全体を学習させる手法を取るものが開発されそれが主流となっています。

ディープラーニングについての更なる詳細は次回以降の記事でまとめていこうと思います。

# 人工知能分野の抱える問題

## フレーム問題

1969年にジョン・マッカーシー氏とパトリック・ヘイズ氏が提唱した問題で、しようとしている事に関係のある事を判断するのが実は一番難しいという問題です。私たち人間は普段この世界から自分のしたい事に関係のある情報を選択し自然と行動していますが、ロボットにそれを行わせるとなると、させたい事とは関係ない事まで考えてしまい、計算量が爆発的に増えて停止してしまいます。

よく取り上げ得られる話として、哲学者ダニエル・デネット氏が論文で示した「ロボットに爆弾を解除する命令を下す」という例がWikipediaに載っているので引用します。

> 状況として、洞窟の中にロボットを動かすバッテリーがあり、その上に時限爆弾が仕掛けられている。このままでは爆弾が爆発してバッテリーが破壊され、ロボットはバッテリー交換ができなくなってしまうので、洞窟の中からバッテリーを取り出してこなくてはならない。ロボットは、「洞窟からバッテリーを取り出してくること」を指示された。

> 人工知能ロボット1号機R1[3]は、うまくプログラムされていたため、洞窟に入って無事にバッテリーを取り出すことができた。しかし、R1はバッテリーの上に爆弾が載っていることには気づいていたが、バッテリーを運ぶと爆弾も一緒に運び出してしまうことに気づかなかったため、洞窟から出た後に爆弾が爆発してしまった。これはR1が、バッテリーを取り出すという目的については理解していたが、それによって副次的に発生する事項（バッテリーを取り出すと爆弾も同時に運んでしまうこと）について理解していなかったのが原因である。

> そこで、目的を遂行するにあたって副次的に発生する事項も考慮する人工知能ロボット2号機R1-D1[4]を開発した。しかしR1-D1は、洞窟に入ってバッテリーの前に来たところで動作しなくなり、そのまま時限爆弾が作動して吹っ飛んでしまった。R1-D1は、バッテリーの前で「このバッテリーを動かすと上にのった爆弾は爆発しないかどうか」「バッテリーを動かす前に爆弾を移動させないといけないか」「爆弾を動かそうとすると、天井が落ちてきたりしないか」「爆弾に近づくと壁の色が変わったりしないか」などなど、副次的に発生しうるあらゆる事項を考え始めてしまい、無限に思考し続けてしまったのである。これは、副次的に発生しうる事項というのが無限にあり、それら全てを考慮するには無限の計算時間を必要とするからである。ただ、副次的に発生する事項といっても、「壁の色が変わったりしないか」などというのは、通常、考慮する必要がない。

> そこで、目的を遂行するにあたって無関係な事項は考慮しないように改良した人工知能ロボット3号機R2-D1[5]を開発した。しかし今度は、R2-D1は洞窟に入る前に動作しなくなった。R2-D1は洞窟に入る前に、目的と無関係な事項を全て洗い出そうとして、無限に思考し続けてしまったのである。これは、目的と無関係な事項というのも無限にあるため、それら全てを考慮するには無限の計算時間を必要とするからである。事程左様に、人間のように判断することができるロボットR2-D2を作るのは難しい。 



この問題は色々な論説がありますが、一般的には現在も解決されていない問題とされています。

## シンボルグラウンディング問題

コンピュータが理解するための<strong>「記号」</strong>（言葉など）と<strong>「実世界の知識」</strong>がいかにして結びつくかという問題です。<strong>「記号接地問題」</strong>とも呼ばれ1990年に認知科学者のスティーブン・ハルナッドにより提唱されました。

よく参考書やWebサイトなどで例として「シマウマ」を理解する過程が取り上げられているので、それらを引用します。

> 私たち人間に「シマウマを見た事が無い人」がいるとして、「シマウマという動物がいて、シマシマのウマなんだ」と伝えると本物のシマウマを見た瞬間、「あれがシマウマなんだ」とすぐに認識出来るだろう。人間には「シマシマ」という模様のイメージと「ウマ」という動物のイメージがあるため、それらが組み合わさった言葉を聞いただけですぐに想像出来る。ところが、意味の分かっていないコンピュータにはそれが出来ない。シマウマがシマシマのあるウマと言う記号に置き換えられたとしても、シマウマという「記号」とそれを意味するものがグラウンド（結びついて）いない事が問題なのだ。これをシンボルグラウンディング問題と言う。
>
> 一部 [人工知能は人間を超えるか](https://www.amazon.co.jp/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD%E3%81%AF%E4%BA%BA%E9%96%93%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%81%8B-%E8%A7%92%E5%B7%9D%EF%BC%A5%EF%BC%B0%EF%BC%B5%EF%BC%A2%E9%81%B8%E6%9B%B8-%E6%9D%BE%E5%B0%BE-%E8%B1%8A-ebook/dp/B00UAAK07S) から引用

このように、人間が無意識的に行っている事を人工知能に行わせるのが実は難しかったりするようです。

## 身体性

人工知能分野における身体性は、人間のように物理的な身体が無ければ人間の様な知能は作れないと論じる考え方です。これはシンボルグラウンディング問題とも関係していて、人間は体を通じて外界の情報を感じ取り外界に対して働きかけたりする。そのようにして得た知識は膨大なもので、それを記号と結び付けるには身体があって初めて可能という考え方になります。

これは、ディープラーニングの登場により人工知能自身が特徴量を学習する事が出来るようになった事で、この問題は解決されるんじゃないかという意見もあるようです。

## 知識獲得のボトルネック

これは第2次ブームの際に問題になった知識表現に関する問題で、それにより知識表現に関する研究が進みました。その中でオントロジーや意味ネットワークという技術が研究され、1984年にはCycプロジェクトという一般常識をコンピュータに取り込もうとするプロジェクトが開始されましたが、現在も未だに完成されていません。このようにコンピュータが知識を獲得する事の難しさを「知識獲得のボトルネック」と呼びます。この問題も、既に上げた「フレーム問題」や「シンボルグラウンディング問題」などと密接に関わっている問題です。

## シンギュラリティ

人工知能研究の権威であるレイ・カーツワイル氏が提唱した問題で、2045年に起きる技術的特異点の事を指します。これによると2045年には人工知能研究が進み、人工知能自身が自らより賢い人工知能を作れるようになるとされています。つまりその時点で無限に賢い人工知能が作られるため超越した知能が誕生するというのです。この問題に対して色んな議論がされていますが、この問題が話題になった事も第3次ブームを盛り上げた理由になっているようです。

ちなみにこれによると人間より人工知能が賢くなるのは2029年頃だと言われていますが、どうなるんでしょうか。

以上のように、人工知能分野が抱える問題は複数あり現在でも様々な議論がされています。

# 機械学習の手法

機械学習の手法は一般的に大きく分けて「教師あり学習」「教師なし学習」「強化学習」の3種類に分ける事が出来ます。
これらのどれが優れているという訳ではなくそれぞれ目的や用途が違うため、その時の目的や用途によって使う手法を考える必要があります。

## 教師あり学習

教師あり学習は、<strong>教師となる正解ラベルの付いたデータをモデルに与えて、入力と出力の関係を学ぶ学習手法</strong>です。
つまり、正解のラベルとそれぞれのデータの着目すべき点である<strong>特徴量</strong>との関連性を見出し予測値に近づけようとするアプローチです。

高い精度を出すためには、サンプルとなるデータの数が大量に必要であったり、入力データをきちんと整理しないと特定の特徴量に過剰に反応してしまったりするため、<strong>特徴量エンジニアリング（最良のデータ表現を探索する事）</strong>を行う必要があります。
また、教師あり学習では連続する数値を予測したい場合は<strong>回帰学習</strong>、どのラベルに属するかを予測したい場合は<strong>分類学習</strong>という風に分ける事が出来ます。

<em>例1. 土地の情報から不動産価格を予測したい</em>
　→回帰問題

<em>例2. 花の特徴から花の種類を判別したい</em>
　→分類問題

また、代表的なアルゴリズムとしては以下のものが存在します。

・<strong>線形回帰</strong>
・<strong>ロジスティック回帰</strong>
・<strong>ランダムフォレスト</strong>
・<strong>ブースティング</strong>
・<strong>ニューラルネットワーク</strong>
・<strong>自己回帰モデル</strong>

各アルゴリズムについては、次回以降に見ていこうと思います。

## 教師なし学習

教師なし学習は、正解ラベルが無いデータをモデルに与えてデータを可視化したり、同じ特徴の物をまとめたりして<strong>データの特徴を掴む事が出来る学習手法</strong>です。
教師なし学習も種類が複数ありますが、主に行うタスクは<strong>クラスタリング</strong>と、<strong>次元削減</strong>です。

教師なし学習の難しさとしては、正解ラベルが無いため正しい出力かを判断するのは結局のところ人力で行わなくてはならないという点で、使われるタイミングや用途としては、

・データサイエンティストがデータの理解をするため
・教師あり学習のデータの前処理

などで用いられることがほとんどです。

### クラスタリング

クラスタリングの目的は、与えられた入力データから特徴量を掴みグルーピングする事です。教師あり学習の場合はあらかじめ分かれるグループが決まっているのに対し、クラスタリングの場合は正解ラベルが無いデータの特徴を掴みその中から特徴が似通ったデータをグルーピングします。
代表的な手法としては<strong>k-means法（階層なしクラスタリング）</strong>などがよく使われます。
これは、あらかじめ決めたkの値の数だけデータをグループ分けする手法です。

### 次元削減

次元削減の行う事は特徴量の次元を削減する事です。それにより多数の特徴量の中から重要な特徴量のみを抽出したりする事ができ、学習の時間が削減されたりモデルの予測精度を向上させる事が出来ます。

代表的な手法は<strong>主成分分析（PCA)</strong>で、これは相関のある多数の特徴量から相関のない少数の特徴量を抽出する手法で、主成分となる（重要な特徴量）特徴量を抽出する事が出来る手法です。

教師なし学習のその他の手法としては、
・<strong>ウォード法（階層ありクラスタリング）</strong>
・<strong>協調フィルタリング</strong>
・<strong>トピックモデル（LDAなど）</strong>　なども存在します。

## 半教師あり学習

また、<strong>半教師あり学習</strong>という教師あり学習と教師なし学習の間に位置する学習手法も存在します。
これは実世界での機械学習タスクで、一部のみラベル付けされているデータが存在するような状態で起きる問題で教師あり学習と教師なし学習を用いる事により、精度向上を目指すものです。

半教師あり学習については、詳しく書いている方の記事を参照してください。
[半教師あり学習のこれまでとこれから](https://qiita.com/dcm_ishikawa/items/584cd373f49dd917566a)

## 強化学習

強化学習は、あらかじめ設定された<strong>報酬値（スコア）を最大化するための行動を学習させる手法</strong>です。この学習手法によりエージェント（コンピュータ）がスコアの最大となる最適な行動を学習する事が出来ます。つまり人間が明示的にプログラミングしなくてもコンピュータ自身に学ばせる事が可能です。これは近年ではボードゲームや、ロボット工学、自動運転などにも用いられている手法です。

2016年にはDeepMind社が開発した強化学習を使用した囲碁ソフトである「AlphaGo」が人間のプロ棋士に勝利した事で話題になりました。
このソフトは教師あり学習フェーズと、強化学習フェーズの2段階で学習させる仕組みを取っており、従来のモンテカルロ法を用いた囲碁ソフトを圧倒する強さを実現する事が出来ました。

強化学習の代表的なアルゴリズムは以下のものです。
・<strong>バンディットアルゴリズム</strong>
・<strong>マルコフ決定仮定モデル</strong>
・<strong>価値関数を用いたモデル</strong>
・<strong>方策勾配法</strong>

強化学習の詳細も次回以降まとめていきたいと思います。

# 終わりに

今回の記事では人工知能に関する歴史や手法の特徴を全体にまとめました。
まとめていく上で自分の理解していないところが明確になったり、アウトプットするために深いところまで調べた事で新たな発見があったりして結果的にプラスになったと思います。

次回は数学的理解を含めたアルゴリズムの詳細や、ディープラーニングについて深堀していこうと思います。

# 参考にさせていただいた本など

https://www.amazon.co.jp/%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD%E3%81%AF%E4%BA%BA%E9%96%93%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%81%8B-%E8%A7%92%E5%B7%9D%EF%BC%A5%EF%BC%B0%EF%BC%B5%EF%BC%A2%E9%81%B8%E6%9B%B8-%E6%9D%BE%E5%B0%BE-%E8%B1%8A-ebook/dp/B00UAAK07S

https://www.amazon.co.jp/%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E6%95%99%E7%A7%91%E6%9B%B8-%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-G%E6%A4%9C%E5%AE%9A-%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%A9%E3%83%AA%E3%82%B9%E3%83%88-%E5%85%AC%E5%BC%8F%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88/dp/4798157554

https://www.amazon.co.jp/%E6%9C%80%E7%9F%AD%E7%AA%81%E7%A0%B4-%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0G%E6%A4%9C%E5%AE%9A-%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%A9%E3%83%AA%E3%82%B9%E3%83%88-%E5%95%8F%E9%A1%8C%E9%9B%86-%E5%85%89%E5%A4%AA%E9%83%8E/dp/429711609X