読者です 読者をやめる 読者になる 読者になる

RでDeep Learning(3)

環境はWindows10 & R-3.3.3

非常に良い本である。
ただし、自分はPythonに精通していないのでRでDeep Learningを試してみた。

この記事は上記の本に記載されているPythonのコードのほんの一部をRに書き換えただけです。
詳しく知りたい人はぜひ本を読んでみることをお勧めします。
非常に詳しくわかりやすく書かれています。

損失関数を定義する。

#2乗和誤差
mean_squared_error <- function(y,t) 0.5*sum((y-t)^2)

#交差エントロピー誤差
cross_entropy_error <- function(y,t) (-1)*sum(t*log(y+1e-7))

f(x_0,x_1)={x_0}^2+{x_1}^2の図示。

Myfunc <- function(x,y) x^2+y^2
x <- seq(-3,3,by=0.1)
y <- x
z <- outer(x,y,Myfunc)
persp(x,y,z,theta=60,phi=25)

f:id:touch-sp:20170419132321p:plain:w350
勾配の実装。

#関数の定義
function_2 <- function(x) sum(x^2)

#勾配を求める関数
numerical_gradient <- function(f,x){
	h <- 1e-4
	grad <- numeric(length(x))

	for(i in 1:length(x)){
		tmp_val <- x[i]
		#f(x+h)の計算
		x[i] <- tmp_val+h
		fxh1 <- f(x)

		#f(x-h)の計算
		x[i] <- tmp_val-h
		fxh2 <- f(x)

		grad[i]=(fxh1-fxh2)/(2*h)
		x[i] <- tmp_val
	}
	return(grad)
}