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

HOME  >  [簡単に分かる] プログラミング言語「Python」を使ったニューラルネットワークの作り方

公開日:2017.09.14 [最終更新日]2017.10.23

[簡単に分かる] プログラミング言語「Python」を使ったニューラルネットワークの作り方

カテゴリー: AI(人工知能)の作り方

こんにちは、AI研究所の見習い研究員マサミです。

プログラミング言語「Python」を使ったニューラルネットワークの作り方を紹介します。
今回は、機械学習用のライブラリは使わずに作ってみたいと思います。


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

ニューラルネットワークとは、人間の神経細胞「ニューロン」を模した単純パーセプトロンを複数組み合わせて出来たモデルです。
単純パーセプトロンとは以下のようなイメージです。

01

入力された値「x」に重み「w」をかけ、各入力と重みの積を足したものを「活性化関数」を通して出力するというものです。
上の図では、活性化関数としてステップ関数を用いています。
ステップ関数は値が0以上の場合は「1」、0より小さい場合は「0」の値を返す関数です。

このような仕組みの単純パーセプトロンを複数組み合わせることでニューラルネットワークを構築することができます。
ニューラルネットワークは出力層、隠れ層、出力層から構築されていて、各層には単純パーセプトロンと同じ機能を持つノードがあります。

02

隠れ層の数を増やすことでディープニューラルネットワークを構築することができます。
ディープニューラルネットワークを使って機械学習をさせることで、最近話題のディープラーニングをさせることができます。

また、ニューラルネットワークにはその他にも種類があり、画像認識の分野で高い効果を発揮している「畳み込みニューラルネットワーク(CNN)」や、時系列分析や自然言語処理で用いられている「再起型ニューラルネットワーク」などがあります。

畳み込みニューラルネットワークについては以前の記事「Azure MLでCNN(畳み込みネットワーク)を使ってディープラーニングさせる方法」を参考にしてみてください。/p>


ニューラルネットワークの作成方法

ここまでは、ニューラルネットワークの概要と仕組みを説明してきましたが、ここから実際にニューラルネットワークのプログラムを作成してみたいと思います。
ニューラルネットワークを使った機械学習については次回書きたいと思いますので、今回は、単純にニューラルネットワークを使って結果を出力するプログラムの作成方法について書きます。

作成するニューラルネットワークは、上の図と同じように入力の数3、隠れ層のノード数「2」、出力の数1です。

03

隠れ層のノードの活性化関数はRelu関数を使います。
Relu関数は、値が0以上の場合はそのままの値を返し、値が0より小さい場合は「0」を返す関数です。

まずは、Relu関数を関数名「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
w7 = 1.4
w8 = 2.0

隠れ層の各ノードから出力される値を計算します。

# 隠れ層の各ノードからの出力を計算
u1 = Relu(x1 * w1 + x2 * w3 + x3 * w5)
u2 = Relu(x1 * w2 + x2 * w4 + x3 * w6)

出力層からの出力を計算します。

# 出力層からの出力を計算
y = u1 * w7 + u2 * w8

最後に出力された値を表示してみます。

# 出力された値を表示
print(y)

結果は「7.4」となりました。

今回は、ニューラルネットワークを順伝播の方向に実行しただけでしたが、次は機械学習の方法について書きたいと思います。

タグ:


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

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

AI入門ブログの中の人

AI研究所 研究スタッフ
通称:マサミ
アメリカ・サンフランシスコにある情報メディアの専門学校を卒業。大手金融会社での事務経験を経て、2016年9月よりAI研究所に入所。見習い研究員として、AI技術を日々勉強中。

LINE@

Facebookページ