著者:機械文書
ページ数:70
¥99 → ¥0
単純パーセプトロンは、機械学習で最も簡単なトピックである。この学習を通して機械学習を体験してほしい [本シリーズの執筆姿勢] 1, 機械学習はライブラリを利用して実行するのが正しい作法
2, ライブラリがどのように動いているか少しだけ知りたい
3, プログラムの概要と流れだけ知りたいので作りこみは不要(正常系テストに通ればよい)
「流行りの機械学習をちょっと知りたいな」という軽い気持ちで読んでほしい
[機械学習の体験] 単純パーセプトロンは、次の手順で実施する1, 学習用データを入力
2, 入力値を判別して出力
3, 出力値と期待値が異なる場合、パラメーターを修正(学習部分)
正しいパラメーター(重み)を探すことが、単純パーセプトロンの肝であり、本テキストで学習することである。
「入力→出力→学習」という流れを把握できれば、機械学習の最初の一歩としてはまずまずだと思っている。
(1次元の単純パーセプトロン)
目標プログラムを掲載する。
(タブの代わりに全角空白を利用しているため、コピペして利用できない)
———-
# csvデータ読み込み
input <-read.csv(“data.csv”,fileEncoding=”UTF-8″,header=T)
# 重み (定数項、データ)
w <- c ( -1 , -1 )
# 識別器:引数 (重み、入力値)
output <- function ( w , x ) {
# 計算式に値を入力
res <- sum ( w * as.numeric ( x ) )
# 出力値を戻す
ifelse ( res >= 0 , 1 , -1 )
}
# 【機械学習】:引数 (重み、学習率、データ、分類フラグ)
learn <- function ( w , rate , x , flg ) {
w + rate * x * flg
}
# 全体を反復(30回決め打ち)
for ( count in 1 : 30 ) {
# 全てのデータを処理
for ( i in 1 : nrow ( input ) ) {
# 出力値を取得
res <- output ( w , input [ i , 1:2 ] )
# 出力値と分類フラグを比較
if ( res != input [ i , 3 ] ) {
# 【学習部分】:値が異なる場合、新しい重みを生成
w <- learn( w , 0.2 , input [ i , 1:2 ] , input [ i , 3 ] )
}
}
}
# 学習終了
# 正しく学習したか確認:5以上は「1」を出力
# [-1,-1,-1,-1, 1 , 1]
print ( apply ( input [ , 1:2 ] , 1 , output , w=w ) )
———-
[data.csv]:1次元用データ
fix,data,flg
1,1,-1
1,2,-1
1,3,-1
1,4,-1
1,5,1
1,6,1
———-
おそらく最も簡単な機械学習のサンプルプログラムだと思う。
本テキストでは、このサンプル以外にも、2次元のプログラムも掲載している。
———-
[data.csv]:2次元用データ
x,y,flg
1,8,1
2,7,1
3,9,1
4,7,1
5,8,1
6,9,1
7,10,1
8,4,-1
9,2,-1
10,5,-1
———-
*数学的な背景は解説しない。
*ライブラリは利用しない。
*Rの解説はしない
*一般的な用語は利用しない。本テキスト独自の用語を利用する(入門の入門という位置づけ)。
∂誤差 / ∂wij =
[ Σ(∂誤差k/∂出力k)(∂出力k/∂値k)(∂値k/∂中間出力i) ] (∂中間出力i/∂中間値i)(∂中間値i/∂wij)=
[ Σ -( 正解k – 出力k ) 出力k ( 1 – 出力k ) 重みki ] 中間出力i ( 1 – 中間出力i ) 入力値j
このようなイメージである。
シリーズ一覧
- 同シリーズの電子書籍はありませんでした。
この期間中は料金が980円→0円となるため、この記事で紹介している電子書籍は、すべてこのKindle Unlimited無料体験で読むことが可能です。