ニューラルネットワーク

備忘録_ニューラルネットワークの学習

ニューラルネットワークの学習の手順(確率的勾配法(SGD)) 確率的とは、「確率的に無造作に選び出した」という意味である。 ステップ1 ミニバッチ 訓練データの中からランダムに一部のデータを選び出す。その選ばれたデータをミニバッチと言い、ここでは、そのミニバッチの損失関数の値を減らすことを目的とする。 ステップ2 勾配の算出 ミニバッチの損失関数を減らすために、各重みパラメータの勾配を求める。勾配 […]

備忘録_勾配

すべての変数の偏微分をベクトルとして纏めたものを勾配という。 Pythonで実装すると・・・ np.zeros_like(x) xと同じ形状の配列で、その要素が全て0の配列 今回の例で使用する関数     Pythonで実装した場合 (3, 4)、(0, 2)、(3, 0)での勾配 ※実際は[6.00000000000378, 7.999999999999119]という値が得ら […]

備忘録_手書き数字認識

MNIST 手書き数字の画像セット 機械学習の分野で最も有名なデータセット 0から9までの数字画像から構成 訓練画像 60,000枚 テスト画像 10,000枚 訓練画像を使って学習を行い、学習したモデルでテスト画像に対してどれだけ正しく分類できるかを計測する 28×28のグレースケール画像(1チャンネル) 各ピクセルは0から255までの値を取る それぞれの画像データに対して対応するラベルが与えら […]

備忘録_出力層の設計

ニューラルネットワークは、分類問題と回帰問題の両方に用いることができる。ただし、分類問題と回帰問題のどちらに用いるかで、出力層の活性化関数を変更する必要がある。一般的に、回帰問題では恒等関数を分類問題ではソフトマックス関数を使う。 分類問題 データがどのクラスに属するかという問題。 例としては人の写った画像から男性か女性かを分類する問題。 回帰問題 ある入力データから、(連続的な)数値の予測を行う […]

備忘録_3層のニューラルネットワーク

各層における信号伝達の実装 入力層から第1層目への信号の伝達 ①はバイアスニューロンである。 上記の記号の意味は下記のとおりである。 を数式で表現     行列の積を用いて表現     、、、は下記のとおり     Numpyの多次元配列を使用して行列の積を計算 ※ここでは、入力信号、重み、バイアスは適当な値に設定している 第1層目の活性 […]

備忘録_Python_Numpyの多次元配列

多次元配列 多次元配列とは、簡単に言うと「数字の集合」である。数字が1列に並んだものや長方形状に並べたもの、3次元に並べたものやN次元状にならべたものを多次元配列をいう。 1次元配列  np.ndim() 配列の次元数取得 インスタンス変数shape 配列の形状取得 2次元配列 「3×2の配列」を作成。3×2の配列とは、最初の次元に3つの要素があり、次の次元に2つの要素があるという意味である。 2 […]

備忘録_活性化関数

ステップ関数(階段関数) 入力が0をこえたら1を出力し、それ以外は0を出力する関数である。     ステップ関数をグラフで表すと。。。 ステップ関数をグラフで表すプログラム np.arange(-5.0,5.0,0.1)は-5.0から5.0までの範囲を0.1刻みでNumPy配列の生成をする。 シグモイド関数     exp(-x)はを意味する。eはネイピア数 […]

備忘録_ニューラルネットワークの仕組み

ニューラルネットワークの繋がり方 ニューラルネットワークを図で表すと、下記のようになる。 一番左の列を入力層、一番右の列を出力層、中間の列を中間層と呼ぶ。中間層は隠れ層と呼ぶこともある。 ニューロンの繋がり方に関して言えば、パーセプトロンとなんら変わりはない。 活性化関数とは 入力信号の総和を出力信号に変換する関数は一般に活性化関数と呼ぶ。活性化関数は入力信号の総和がどのように活性化するか(どのよ […]