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

HOME  >  pythonでニューラルネットワーク実装をするには?作成方法を大公開

公開日:2020.07.06 

pythonでニューラルネットワーク実装をするには?作成方法を大公開

AI(人工知能)の知識

様々な技術が誕生しているAI業界。
その中でも最新技術などに数多く取り入れられているのが、pythonでニューラルネットワークを実装したシステムです。
色々な種類の数式とpythonを用いることで、私達の暮らしを豊かにする技術としても知られています。
そこでニューラルネットワークの基礎知識やpythonでニューラルネットワークを実装したもの、実装するときの具体的や方法について解説します。

ニュートラルネットワークの基礎知識

ニューラルネットワークとは、人間の脳内にある神経回路網を人工ニューロンという数式的なモデルで表したものです。
人間の脳の仕組みからインスピレーションを得たもので、コンピューター上で脳機能を表現するために誕生しました。
脳内にあるニューロンという神経細胞の一つは、周囲の様々な神経細胞との繋がりによって必要な情報が伝達されたり、記憶を留めておいたりすることが出来ます。
この働きをモデルとして、人工的に作り出した数学モデルなのです。

ニューラルネットワークに欠かせないのが、「入力」と「出力」、「重み付け」です。
必要な情報を入力するための配置を入力層と呼び、入力層から受け取った情報を中間層で自分なりに理解し、その結果を次に伝えます。
最終的に出力層に結果が伝わって、答えが導き出されるのです。
重み付けは情報と情報の繋がりのことで、この繋がりに重要度を付けます。
重み付けの値は、学習の内容によって変化します。
このような処理をしながら情報が整理され、その結果から情報を分析したり、認識したりします。

ニューラルネットワークが誕生したのは、1943年です。
人間の脳の仕組みに着目した数式モデルが提唱されるようになり、ニューラルネットワーク理論が誕生したのです。
そして1957年には人間の視覚や脳の機能を真似したシステムとしてパーセプトロンが注目されるようになり、AIブームが巻き起こりました。
ブームは起きたものの、線形分離が不可能だという指摘を受けて下火になりました。
第二次AIブームが訪れたのは、1986年です。
バック・プロパゲーションが開発されたことがブームのきっかけです。
色々な指摘を受けたパーセプトロンを発展させた考え方で、より複雑な学習が可能になりました。
ただインターネットが誕生してから日が浅かったこともあり、情報量の少なさでまたブームは下火となったのです。
2006年にはオートエンコーダという技術が登場し、ニューラルネットワークとオートエンコーダを使った学習方法が確立されます。
これはディープラーニングと言われるもので、第三次AIブームの火付け役となりました。

Pythonでニューラルネットワーク実装したものとは

pythonでニューラルネットワークを実装したものの中には、株や仮想通貨の値動きの予想のシステムがあります。
pythonを実装したニューラルネットワークは一定の周期パターンを持つデータに強いとされていて、ある程度パターンの決められている株や仮想通貨の予想にぴったりです。
これから市場がどのような動きをするのか、どう変化するのか予想するためによく用いられます。
個人の投資家でもこの方法を採用している人もいて、インターネット上から株や仮想通貨の値動きのデータを集め、バックテストという検証を行って投資するのかを判断しているのです。

メールサービスで出来るスパムメールの排除も、pythonでニューラルネットワークを実装しているものの一つです。
利用しているメールサービスが自動的に広告や詐欺などのメールを分類し、不要なメールが届かないようにします。
これもニューラルネットワークのおかげで、スパムメールの典型的な文章やパターンを記憶させて、瞬時に送られてくるメールの分類をしています。

画像や人の顔の自動分類も、pythonを実装しているからこそ出来ることです。
部屋に入るための顔認識や監視カメラの分析でも利用されている技術です。
Pythonの「OpenCV」というライブラリを使うと、カメラに写し出される顔や画像に写っている顔を認識します。

自動運転をすることが出来る自動車の開発にも、pythonを実装したニューラルネットワークが関わっています。
自動運転が出来る自動車では数々のアルゴリズムを利用していますが、その中でも重要とされているのが強化学習です。
自動車が事故を起こさずに安全に走行するためには何度もシミュレーションをして、様々なパターンの走行方法を学習することは欠かせません。
また事故を起こしてしまったときにはどうしたら良いのかなど、膨大なデータを蓄積することになります。
pythonの強化学習があれば莫大なデータも覚えられますし、色々なパターンの走行情報もまとめられるのです。

pythonを使ってニューラルネットワークを実装する方法とは

pythonを使ってニューラルネットワークを実装するためには、まずニューラルネットワークを作成します。
入力の数は「3」隠れ層の数を「2」、出力は「1」です。
隠れ層のノードの活性化する関数はRelu関数にして、値が0以上ならそのまま数字を返して、0よりも小さい数なら「0」と返せるようにします。
Relu関数は「def Relu(x)」と入力して、続けて「return x *(x>0)」とします。
入力の値は「x1=2.0」「x2=1.0」「x3=0.5」です。
同じように重みの定義も「w1=0.5」「w2=1.5」「w3=2.5」「w4=1.2」「w5=1.0」「w6=-1.0」と順番に打ち込むだけです。
そして隠れ層の各ノードから、出力を導き出すために「u1 = Relu(x1 * w1 + x2 * w3 + x3 * w5)」や「u2 = Relu(x1 * w2 + x2 * w4 + x3 * w6)」としておきます。
さらに出力層から出力を計算するので「y = u1 * w7 + u2 * w8」となり、結果が表示される手順です。

pythonを実装するときには中間層の数は1つにして、中間層のユニットの数は2つにしておきます。
学習率は「ϵ=0.1ϵ=0.1」で、モメンタムの係数は「μ=0.9μ=0.9」です。
実際に実装することに成功したのか分からないときには、コンピューターで何度か計算をします。
いくつかのデータを集めて、可視化のためにグラフにすると誤差が分かりやすくなるのでおすすめです。
実装する前には目標数値などを決めておくと、修正するときにもどこを間違えたのか発見しやすいです。

pythonの正解は一つだけではない

pythonでニューラルネットワークを実装をするための数式や値のパターンはいくつもあり、目的によって求める数値や結果も違ってきます。
まずはインターネットや書籍で紹介されている数式などを参考に実装してみて、テストを繰り返して目的に合わせた数式を導き出すようにしましょう。
正解は一つではありません。
固定概念にとらわれずに、オリジナルの実装パターンを見つけてみるのも面白いかもしれません。


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

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