LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

ニューラルネットワーク

ニューラルネットワーク(神経回路網、)は、脳機能に見られるいくつかの特性を計算機上のシミュレーションによって表現することを目指した数学モデルである。研究の源流は生体の脳のモデル化であるが、神経科学の知見の改定などにより次第に脳モデルとは乖離が著しくなり、生物学や神経科学との区別のため、人工ニューラルネットワーク(人工神経回路網、)とも呼ばれる。シナプスの結合によりネットワークを形成した人工ニューロン(ノード)が、学習によってシナプスの結合強度を変化させ、問題解決能力を持つようなモデル全般を指す。広義には誤差逆伝播法を用いた多層パーセプトロンを指す場合もあるが、これは誤った用法である。ニューラルネットワークは、教師信号(正解)の入力によって問題に最適化されていく教師あり学習と、教師信号を必要としない教師なし学習に分けられる。明確な解答が用意される場合には教師あり学習が、データ・クラスタリングには教師なし学習が用いられる。中間層が2層以上ある深層学習においては、出力に近い最後の中間層を教師あり学習で、それよりも入力に近い側を教師なし学習で学習する方法がジェフリー・ヒントンらにより提案されている。結果としていずれも次元削減されるため、画像や統計など多次元量のデータで線形分離不困難な問題に対して、比較的小さい計算量で良好な解を得られることが多い。現在では、特徴量に基づく画像認識、市場における顧客データに基づく購入物の類推など、パターン認識、データマイニングとして応用されている最初に考案された、単純な構造の人工ニューラルネットワークモデル。ネットワークにループする結合を持たず、入力ノード→中間ノード→出力ノードというように単一方向へのみ信号が伝播するものを指す。教師信号によるニューラルネットワークの学習は心理学者ドナルド・ヘッブが1949年に提唱したシナプス可塑性についての法則、「ヘッブの法則」に基づく。神経細胞間のネットワークの繋がりが太くなり、その結果、特定の細胞への情報伝達経路が作られる(情報が流れやすくなる)、これを学習とする。パーセプトロンは学習の結果、集合を超平面により分割する。この学習は有限回の試行で収束することがマービン・ミンスキーによって1969年に証明された。1986年にデビッド・ラメルハートらにより誤差逆伝播法(バックプロパゲーション)が提案され、多層パーセプトロンの学習モデルとして使用されている。バックプロパゲーションは主に中間層が1層の時に使われ、中間層が2層以上ある時は深層学習と呼ばれ、入力に近い側の層をオートエンコーダで学習してから積み上げていく方法などが提案されている。各層を formula_1 と置くと、下記漸化式で表現される。3層の場合は、formula_2 が入力層、formula_3 が中間層、formula_4 が出力層。formula_6 と formula_7 はパラメータ。formula_6 は行列、formula_7 と formula_1 は縦ベクトル。formula_11 を重みパラメータ、formula_12 をバイアスパラメータと呼ぶ。formula_13 は活性化関数と呼び、単純パーセプトロンでは使われていなかった、つまり、formula_14であったが、すると線形になってしまうので、現在は何らかの非線形関数を使う。微分可能な単調関数を使うことが一般的。最もよく使われるのはシグモイド関数の formula_15。学習は誤差を最小化する最適化問題を解く。最適化問題の解法はバックプロパゲーションを使うのが一般的。誤差は二乗和誤差を使うのが一般的。汎化能力を高めるために、誤差に正則化項を加算することが多い。2次の正則化項を追加する場合、誤差に formula_16 を加算する。formula_17 は formula_18 の要素。formula_19 は実数のパラメータ。誤差逆伝播法に用いられる活性化関数に放射基底関数を用いたニューラルネットワーク自己組織化写像はが1982年に提案した教師なし学習モデルであり、多次元データのクラスタリング、可視化などに用いられる。自己組織化マップ、コホネンマップとも呼ばれる。畳み込みニューラルネットワークとは層間が全結合ではない順伝播型ニューラルネットワークのこと。フィードフォワードニューラルネットと違い、双方向に信号が伝播するモデル。すべてのノードが他の全てのノードと結合を持っている場合、全結合リカレントニューラルネットと呼ぶ。乱数による確率的な動作を導入した人工ニューラルネットワークモデル。モンテカルロ法のような統計的標本抽出手法と考えることができる。ニューラルネットワークをより生物学的な脳の働きに近づけるため、活動電位(スパイク)を重視して作られた人工ニューラルネットワークモデル。スパイクが発生するタイミングを情報と考える。ディープラーニングよりも扱える問題の範囲が広い次世代技術と言われている。ニューラルネットワークの処理は逐次処理のノイマン型コンピュータでは処理効率が低く、活動電位まで模倣する場合には処理効率がさらに低下するため、実用する際には専用プロセッサとして実装される場合が多い。2015年現在、スパイキングNN処理ユニットを積んだコンシューマー向けのチップとしては、QualcommのSnapdragon 820が登場する予定となっている。入出力信号やパラメータ(重み、閾値)が複素数値であるようなニューラルネットワークで活性化関数は必然的に複素関数になる。ニューラルネットワークにおいて、各人工神経は線形変換を施した後、非線形関数を通すが、これを活性化関数という。様々な種類があり、詳細は活性化関数を参照。歴史的には、様々な方法があったが、1986年のバックプロパゲーションの発表以降は、バックプロパゲーションが一般的である。詳細はバックプロパゲーションの項を参照。ここでは、3層フィードフォワードニューラルネットワークで回帰を実装する。formula_20 において、formula_21 を学習する。活性化関数は ReLU を使用。学習は確率的勾配降下法(バックプロパゲーション)を使う。3層フィードフォワードニューラルネットワークのモデルの数式は以下の通り。X が入力、Y が出力、T が訓練データで全て数式では縦ベクトル。formula_22 は活性化関数。formula_23 が学習対象。formula_24 はバイアス項。誤差関数は以下の通り。誤差関数は出力と訓練データの間の二乗和誤差を使用。誤差関数 formula_27 をパラメータで偏微分した数式は以下の通り。肩についてる T は転置行列。formula_28 はアダマール積。Python 3.5 によるソースコード。Python において、@ は行列の乗法の演算子、** は冪乗の演算子、行列同士の * はアダマール積。import numpy as npdim_in = 1 # 入力は1次元dim_out = 1 # 出力は1次元hidden_count = 1024 # 隠れ層のノードは1024個learn_rate = 0.005 # 学習率train_count = 64 # 訓練データ数train_x = np.arange(-1, 1, 2 / train_count).reshape((train_count, dim_in))train_y = np.array([2 * x ** 2 - 1 for x in train_x]).reshape((train_count, dim_out))w1 = np.random.rand(hidden_count, dim_in) - 0.5w2 = np.random.rand(dim_out, hidden_count) - 0.5b1 = np.random.rand(hidden_count) - 0.5b2 = np.random.rand(dim_out) - 0.5def activation(x):def activation_dash(x):def forward(x):def backward(x, diff):idxes = np.arange(train_count) # idxes は 0~63for epoc in range(1000): # 1000エポック

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。