#1. neuralnet 패키지로 신경망 만들기
딥러닝을 이용하여 표준정규분포함수를 학습시켜보려고 합니다. 먼저 패키지를 설치해야하는데요. neuralnet 패키지를 사용할겁니다. 아래와 같이 패키지를 설치합니다.
install.packages("neuralnet")
neuralnet 라이브러리를 호출하고 데이터를 생성합니다.
library(neuralnet)
#data 생성
set.seed(1)
input=rnorm(1000)
output=dnorm(input)
rnorm함수는 정규분포의 확률변수를 임의로 추출해주는 함수입니다. 확률분포값을 이용하여 변수를 추출하므로, 확률분포 값이 클 수록 추출될 확률이 높습니다. 디폴트 값이 평균 0, 표준편차 1 이므로, 표준정규분포에서 확률변수가 추출됩니다. 확률변수값이 input data가 됩니다. ouput은 dnorm 함수를 이용하여 반대로 확률변수에 대한 확률분포값을 구해줍니다. 그래프를 그려봅시다.
plot(input,output,'l')
왜 이렇게 나올까요? input이 크기순으로 정렬되어 있지 않기 때문입니다. order 함수를 이용하여 크기순으로 다시 정렬합시다.
output=output[order(input)]
input=input[order(input)]
plot(input,output,'l')
1000개의 데이터중 500개는 훈련용 데이터로, 나머지 500개는 테스트용 데이터로 사용하겠습니다.
#훈련용 데이터를 배정합니다.
input_train=input[1:500]
output_train=output[1:500]
#test데이터를 배정합니다.
input_test=input[501:1000]
output_test=output[501:1000]
cbind 함수를 이용하여 아래와 같이 두 벡터를 하나의 행렬로 만들어줍니다.
my_data_train=cbind(input_train,output_train)
neuralnet 함수를 이용하여 train 데이터로 인공신경망을 학습시킵니다.
my_NN=neuralnet(output_train~input_train, data=my_data_train,
hidden=c(3,3),
threshold=0.01)
hidden=c(3,3)은 두개의 은닉층을 갖고, 각 은닉층은 세개의 뉴런을 갖는다는 의미입니다. 아래와 같은 그림입니다.
만약 세개의 은닉층을 갖고, 각 은닉층이 두개의 뉴런을 갖는다면 hidden=c(2,2,2) 가 됩니다.
'3. 딥러닝 (neuralnet 패키지) > 2) 정규분포 학습 예제' 카테고리의 다른 글
[R 딥러닝 예제] 표준정규분포함수 만들기 #3. 학습결과 평가하기 (0) | 2019.12.14 |
---|---|
[R 딥러닝 예제] 표준정규분포함수 만들기 #2. 학습결과 확인하기 (0) | 2019.12.14 |
댓글