工学系大学院生のブログ

2人の大学院生による雑記ブログ

カテゴリー: 趣味プログラミング

第1-A回 数学から見るニューラルネットワーク [python]

ニューラルネットワークの実装に関して,細かい点を記載していきます. 1 オンライン処理  ニューラルネットワークでは、誤差関数を最小化するようにしました。  誤差関数の勾配は次のように書いていました。 \begin{align}\nabla E (\textbf{w}) = \frac{1}{N} \sum \frac{\partial E}{\partial \textbf{w}}\end{align}  この方法でも問題ありませんが、誤差関数は一般的に複雑で局所解に陥る可能性があります。    勾配降下法はその時点における傾きを使用するため、関数全体における最小値を探索することはできず、初期値に依存して最近傍の下に凸な場所に落ち着きます。    これを逃.....

第1-4回 数学から見るニューラルネットワーク [python]

 前回までで,ニューラルネットワークの概要を説明してきました.  今回は,これまでの内容をまとめて実装します. 1 タイタニック号  ここでは、1層のニューラルネットワークによる機械学習を行います.  対象とするのは、kaggleのチュートリアルであるタイタニック号の乗客の生死です.(kaggleは企業とエンジニアをつなぐプラットフォームで、テスト用のデータが豊富にあります.)  このチュートリアルでは、タイタニック号の乗客のデータ(性別や年齢、搭乗した港など)と事故による生死の結果が与えられます.そのデータを学習し、船員の生死(0 or 1)を予測します.  まず、データの整理を行います.  データは十分ではなく、虫食い状態なのでその穴を何らかの方法で埋め.....

第1-3回 数学から見るニューラルネットワーク [python]

 前回は,最小化すべき誤差関数を求めました.  今回は,その誤差関数を最小化する方法を紹介します. 1 勾配降下法  誤差関数\(E(w)\)の最小値を求めていきます.  ニューラルネットワークは,複数の入力と出力を組み合わせるため,誤差関数は複雑になります.前回書いた分類における誤差関数は次の形です. \begin{align}E(w) = – \sum_{n=1}^{N} \sum_{k=1}^{K} d_{n k} log z_{k}(W)\end{align}  最小値を求める方法として,勾配降下法を用います. この手法は,ある点における傾きから低い方に下がっていくことで求めます.  概要は過去に記載したことがあるので,こちらをご参照くだ.....

第1-2回 数学から見るニューラルネットワーク [python]

 前回は,ニューラルネットワークにおける入出力を整理しました.  今回は,誤差関数について紹介します.  ニューラルネットワーク全体の内容としては,出力が「 0 か 1 」という分類について掘り下げていきます. 1 誤差関数  機械学習を行う上では,学習データが必要となります.具体的には、入力 \(\textbf{x}\) に対して正しい出力 \(\textbf{d}\) というデータが必要です.  このデータを用いて、重み \(\textbf{w}\) を調整し、すべての学習データ \(\textbf{x}_n\) に対して、ニューラルネットワークの出力 \(\textbf{z}\) が正しい答え \(\textbf{d}\) に近づくようにします. この.....

第1-1回 数学から見るニューラルネットワーク [python]

 機械学習でよく聞くニューラルネットワークについて数学的にどうやって計算しているのか基本的な部分を紹介していきます.  ゴールは、「ライブラリを使わずニューラルネットワークのプログラミングができるようになること」とします.  そのため、実装方法や使用方法にのみ興味がある方は別のホームページをご覧ください.  また,ニューラルネットワークの内容としては,出力が「 0 か 1 」という分類について掘り下げていきます.気が向いたら回帰もするかもしれません. 1 ニューラルネットワークの概要 まず、ニューラルネットワークの模式図は下記の通りです.    ユニット1が入力\((x_1, x_2, x_3)\)を受け取り、総入力\(u\)を計算し、出力\(z\)を得ます.....