リアイム

アウトプット&知識の共有

人工知能 AI の仕組み ディープラーニング を簡単に解説! 具体的な計算方法 おすすめの本

 

 

f:id:a1t2s2u2:20201227122525j:plain

 

 

 

 

今回は人工知能の仕組みを具体的にかつ簡単にご紹介します。

 

 

どんな人向け?

f:id:a1t2s2u2:20200430192119j:plain

人工知能に興味がある方はぜひご覧ください!興味がそこまでない方も、人工知能の仕組みを知ることで企業が「AIを活用した〇〇〜」というフレーズなどに踊らされなくなります。

実際に、「それAIじゃなくてもよくない?」と思うことがあるので知っていて損はないです。また、この記事ではできるだけ簡単に説明しています。そのため初心者の方にも具体的な計算方法を知っていただけます。

※活性化関数のところは読み飛ばしても構いません

 

 

 

ニューロンって?

f:id:a1t2s2u2:20201226234056p:plain

 

人工知能には、生物の脳を構成する神経細胞である『 ニューロン Neuron』の仕組みが利用されています。といっても、完全にニューロンを解析できたわけではないので、仕組みを予想したものです。

細胞の大きさ:0.1mm〜0.005mm

 

ニューロンの数はヒトの脳全体では約860億個にのぼります。ニューロン同士は『 シナプス でつながり合い、複雑なネットワーク(神経回路)を形成しています。

他のニューロンから送られてきた電気信号を、また他のニューロンへと送ります。

このネットワークでの電気信号の受け渡しによって思考する事が可能になると考えられています。

 

 

 

 

 

 

 

ニューラルネットワークとは

f:id:a1t2s2u2:20201226235341p:plain

 

人工知能の技術の一つである『 ニューラルネットワーク (Neural Network)』は、先ほどご説明したニューロンの神経回路を模擬したモデルのことです。

 

この画像のような構造になっており、◯はニューロンを表しています。

 

問題解決へのアプローチ法

ニューラルネットワークには2つの役割があるといえます。

学習

 問題を解くため、ニューラルネットワークをデータを用いて調整します

推論

 調整済みのニューラルネットワークをデータなしに問題を解く

 

ちなみにこの調整のことを『 チューニング 』ともいいます。

 

 

ニューラルネットワークを大きく3つに分けると、

 入力層:1番目の列      値が入力され、中間層に値を送信する

 出力層:最後の列       中間層の計算結果から出力結果の決定を行う

 中間層:入力・出力層以外の列 入力層からの値を計算し、出力層へ値の送信

※中間層の列数はいくつあっても構いません

 

入力値を入力層から中間層へ送信

中間層での値の計算

中間層から出力層へ計算結果を送る

出力結果の決定

 

 

今回は、この計算部も簡単にご紹介します。

 

計算方法 

f:id:a1t2s2u2:20201227002304p:plain

今回はシンプルに考えるため、入力層から中間層への値送信にフォーカスしてみます。一部にすぎませんが、他のニューロンでも同様の処理を行うため、これさえ理解すれば十分です。

 

まず、入力層に入力されるデータを上から、X1 X2とします。

中間層の1行目のy1の値を計算してみましょう。ニューラルネットワークでは、値を送信する際に『 重み 』を値に掛けます。そして、その値をある関数に入れてそのニューロンが値を送信するかどうかを判断させます。

この時、値と重みの積がある値を超えるとニューロンが値を送信するのですが、この"ある値"のことを『 閾値 (いきち)と言います。

 

本当は、これの他にも『 バイアス 』と呼ばれる初期値のようなものがありますが、難しいものではなく少しでもシンプルにするため、今回は省略します。

 

計算式

では、実際に計算式を立ててみましょう。

 y1 = X1 × w1 +X2 × w2
 

ただし、X1 × w1X2 × w2はそれぞれの閾値を超えているものとします。

 

具体的な数値での計算

具体的な数値で計算してみましょう。

f:id:a1t2s2u2:20201227004245p:plain

入力層の閾値は、上から「0.3 , 0.5」とします。

まずは、X1 × w1の値を計算しましょう。

2.0 × 0.2 = 0.4

この値は、閾値である0.3を超えているので、y1へ送信できます。

 

次に、X2 × w2の値を計算しましょう。

1.0 × 0.5 = 0.2

この値は、閾値である0.5を超えていないので、y1へ送信することはできません。

 

以上のことから y1 = 0.4 です。

そしてこのy1もまた、次の層へ値を同様に送信します。

 

基本的にこれの繰り返しです。

 

 

 

活性化関数

f:id:a1t2s2u2:20201227110243p:plain

活性化関数送信されてきた入力信号の総和を値に変換するもの

 

活性化関数 』という関数に値を代入し、その結果を次のニューロンへ送信します。

図で説明すると、入力の総和であるAという値を活性化関数のhに代入します。そしてその計算結果であるBという値が次のニューロンへと送信されます。

 

数式:B = h(A)

 

では、活性化関数内ではどのような計算がなされているのでしょうか。

実際にいくつかご紹介します。

活性化関数の例

 ステップ関数

 

f:id:a1t2s2u2:20201227111233p:plain

 

こちらの関数は、もっとも古い活性化関数といっても良いでしょう。

xの値が0以上ならば、常に出力値は1です。

ex:

Aの値が1なら、Bは1になり、

Aの値が-1なら、Bは0となります。

 

シグモイド関数

 

 

f:id:a1t2s2u2:20201227111815p:plain

 

この関数の特徴としては、"なめらかさ"があげられます。

実はこの"なめらかさ"がとても大切な性質になります。なめらかに連続しているため微分する事が可能です。実際に微分してみましょう。

この関数を微分するには、数学Ⅲの微分方を理解している必要があります。実は、ちょうど昨日この微分を勉強したばかりなので正しいか不安です。もしも間違っていたら教えていただきたいです。

 

微分の仕方はいくつかあると思います。

今回は関数を-1乗と考え、合成関数の微分を行いました。

f:id:a1t2s2u2:20201227113522p:plain

計算していて気づいたのですが、合成関数のなかに合成関数といった初めての微分でした。念の為、調べてみると

f:id:a1t2s2u2:20201227113638p:plain

引用先:

 

 

どうやら、トリッキーな変形前までは結果は正しいようです。

この後の変形はちょっとよくわかりません笑(悔しい…)

詳しく知りたい方は、引用元のサイトへお願いします。

 

とにかく、シグモイド関数微分できる点が良いのです。

 

tanh関数

 

f:id:a1t2s2u2:20201227114644p:plain

こちらがtanh(x)のグラフです。

「あれ、シグモイド関数と同じじゃない?」

と思った方もいるでしょう。では、二つを比べてみます。

f:id:a1t2s2u2:20201227114740p:plain

f:id:a1t2s2u2:20201227114750p:plain

このように、tanh関数の方が幅が広くなっています。

実は、シグモイド関数微分値の最大は0.25ですが、もっと幅を広める事ができるtanh関数の微分値の最大は1です。

グラフを見てみると、x=0の地点で、傾きが1であることがわかります。

 

そして、tanh関数の中身は、

f:id:a1t2s2u2:20201227115457p:plain

青丸の関数になっており、グラフを見てわかるようにピッタリと重なっています。

 

 

 

もうお気づきでしょう。

活性化関数の多くにはe(ネイピア数)が用いられています。

微分の大切さが伝わってきますね。

 

活性化関数は他にもたくさんあるので、興味のある方は検索してみてください。

 

 

 

ディープラーニングとは

f:id:a1t2s2u2:20201227122601j:plain

少し話を戻しますが、ニューラルネットワークを思い出してください。いくつかの層で構成されていましたが、その層をもっと増やしてみてはどうでしょうか

そう、ディープラーニングとは層を深くしたディープなニューラルネットワークのことです。ですが、単に層を深くしたからといって性能がよくなるわけではありません。

ディープラーニングには課題もあります。性質とともにご説明します。

 

 

 

ディープラーニングの特徴

この技術は画像認識自動運転ゲームや囲碁将棋…正直ほとんどのことに応用できます。最近では、医療現場での活躍も期待されています。画像を見て異常のある箇所を見つけ出してくれます。

これでは、人の仕事がなくなってしまいますね。

 

そして最も驚くべきことは、

『 十分なデータがあれば、自動的に特徴を抽出する事ができることです 』

 

f:id:a1t2s2u2:20201228000434j:plain 

例えばりんごの画像をたくさん機械に見せることで、りんごである特徴を理解できます。りんごである特徴には、「赤いろ」「丸まった形」などがあげられます。

 

「いや私だってそれくらいできますよ!」

 

と思われるかもしれませんが、これまで機械は人間が設定したプログラムで物事を判断するしかできませんでした

 

つまり、エンジニアが色の値の範囲を定め、形の範囲を定め…といったように特徴を自分で設定していたのです。

これでは設定が難しく、限界があります。このりんごだって設定するのが難しいでしょう。単に赤色といっても、rgbの値で範囲を決定するのが難しいのです。

人間の設定を必要としない機械の誕生です。人工知能

 

 

 

 

 

 

 

シンギュラリティ 

 

なかには「AIが人を上回り、人類を滅ぼしてしまうのではないか。」と危惧する人もいます。実際に有名な人工知能研究の世界的権威であるレイ・カーツワイル博士AIなどの技術が、自ら人間より賢い知能を生み出す事が可能になる時点であるシンギュラリティ(技術的特異点の概念を提唱しています。

 

f:id:a1t2s2u2:20201227122330j:plain

 

博士は2045年にシンギュラリティに到達すると提唱しています。この時代を迎えた後の人類はどうなっているのでしょうか…

 

AIが支配する世界でしょうか。

それとももう人類は存在しないのでしょうか。

 

 

 

ディープラーニングの課題

 

f:id:a1t2s2u2:20201227122632j:plain

 

・計算量が膨大 

 層を深くしたことにより、もちろんニューロン数が増えます。ニューロンが増えると計算量が増えるため、コンピュータの処理能力が必要になります。

 

・大量のデータが必要

 ディープラーニング大量のデータ(ビックデータ)によって学習を行います。

 画像認識などには何万枚以上も必要になることもあります。

 これだけの情報を集められるのは、大手企業くらいしかできません。そのため、情報は価値があります。情報を支配する企業が世界を支配する事ができます。

 

・どのような特徴を抽出したのかわからない

 具体的な計算方法をご紹介しましたが、あれでどうやって特徴をつかめているのか疑問に思う方もいるでしょう。

 数値の集まりなので、 りんごの何が特徴なのかエンジニアにはわかりません。

 

 

 

おすすめの人工知能についての本

 

ディープラーニングG検定公式テキスト

こちらはG検定という人工知能の検定の本なのですが、人工知能を勉強するにはとても良い本です。難しい数式やプログラムはなく、用語や仕組みを図を用いてわかりやすく説明してくれます

「実際にAIを作りたいわけではないけど、仕組みは知りたいなぁ」

という方におすすめです。

 

G検定に合格すると、AIについて理解できている証明になるので、就職時に役に立ちます。これからはAIの時代なので知っておいて損はありません。

 

 

 

 

 

 

ゼロから始めるディープラーニング

 

本当に人工知能の仕組みを全て理解したい方や、実際にゼロからディープラーニングを構築したい方は本書がおすすめです。もともと外国の本なのですが、とても良質で人気です。このシリーズはいくつかありますが、最初はこちらがおすすめです。

やりたいことに応じてどの本にするかは考えた方がいいです。

 

冒頭には人工知能プログラミングでよく用いられるPythonという言語の使い方が書かれており、Pythonを学習することもできます。

 

内容はプログラムや数式が実際に書かれているため、人工知能の中身を知りたい方が対象です。最初に読むときは難しすぎて諦めてしまうかもしれませんが、何回も読み直すことで段々とわかってきます。

 

実は学校の図書室にあり、初めて読んだときは数式が理解できませんでした。(当時:高1)そのため、Σや微分すら知らずに数学の先生に聞きに行ったりしていました。

ですが、今となっては大学数学の複雑な部分以外は理解できるようになりました。

 

右側は自然言語処理という「言葉に関するAIについて」です。

 

 

 

  

 

 

おまけ: 人口知能の裁判官

 

 記事を読んでいただきありがとうございます。

人工知能はこれからどんどん進化していく分野だと思います。このまま進化させていいのか不安な方もいると思いますが、僕は進化させることに賛成です。例え、人類の敵であろうと、客観的な視点で判断する事ができる人工知能は必要だと思います。

 

 

高校で探求という活動があり、自分の興味のある分野に関して論文を作成するのですが、その活動の際に意見交換があり、ある生徒がこう言っていました。

人工知能を裁判官などにして、平等な裁判を行えるようにしたい

なるほど。人ではなく、機械の判断により平等さを確保するのか…

 

ここで僕は疑問に思います。どうやってその平等な判断を下すのか

人工知能は多くのデータを学習することで最適な解を見つけ出します。そのため、平等な判断を下すためにはどうやってデータを用意すれば良いのでしょうか。

平等なデータを用意することは可能なのでしょうか…

 

 

人間が用意したデータでは、平等な判断ができるAIはできないと思います。

これまでにあった裁判結果を学習用のデータにしたとしても、やはり完全に平等な判決は難しいでしょう。 

 

 

 

おすすめ記事

 

 

 



記事の内容に間違いがあった場合は、Twitterもしくはお問い合わせフォームからお伝えください。