MINI MINI MANI MO
%
% Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
%
\name{ore.neural}
\alias{ore.neural}
\alias{predict.ore.neural}
\alias{print.ore.neural}
\alias{coef.ore.neural}
\alias{summary.ore.neural}
\title{
Oracle R Enterprise Multilayer Feed-Forward 신경망 모델
}
\description{
\code{ore.frame} 데이터의 Multilayer Feed-Forward 신경망 모델을
생성합니다.
}
\usage{
ore.neural(
formula,
data,
weight = NULL,
xlev = NULL,
hiddenSizes = NULL,
activations = NULL,
gradTolerance = 1E-1,
maxIterations = 200L,
objMinProgress = 1E-6,
lowerBound = -0.7,
upperBound = 0.7,
nUpdates = 20L,
scaleHessian = TRUE,
trace = getOption("ore.trace", FALSE))
## Specific methods for ore.neural objects
\method{predict}{ore.neural}(object, newdata, supplemental.cols = NULL, ...)
\method{print}{ore.neural}(x, ...)
\method{coef}{ore.neural}(object, ...)
\method{summary}{ore.neural}(object, ...)
}
\arguments{
\item{ formula }{
학습할 신경망 모델을 나타내는
\code{\link[stats]{formula}} 객체입니다.
}
\item{ data }{
모델에 대한 데이터를 지정하는 \code{ore.frame} 객체입니다.
}
\item{ hiddenSizes }{
해당 요소가 뉴런 수를 각 숨김 층에
저장하는 정수 벡터입니다. \code{ore.neural}에는 임의 개수의 숨김
층이 지원됩니다. \code{hiddenSizes}의 길이에 따라 모델에서 숨김 층
수가 지정되며, \code{hiddenSizes[k]}은(는) \code{k}번째 숨김 층에 뉴런
수를 저장합니다. \code{hiddenSizes} 값은 입력 단위가 출력
뉴런에 직접 접속되는(숨김 구조 없음) \code{NULL}일 수
있습니다. \code{hiddenSizes}의 임의 요소가 0이면
\code{hiddenSizes=NULL}과(와) 동일하게 모든 숨김 뉴런이
삭제됩니다.
예: \code{hiddenSizes=c(10, 4)}은(는) 두 개의 숨김 층을 포함하는 신경망을
지정합니다(\code{length(hiddenSizes)}이(가) 2임). 여기서 첫번째 숨김 층에는
10개의 뉴런이 포함되고 두번째 숨김 층에는 4개만 포함됩니다.
예: \code{hiddenSizes=c(101, 20, 1)}은(는) 각각 101개, 20개 및 1개의 단위가
포함된 3개의 숨김 층으로 구성되는 신경망을 지정합니다.
일반적인 교육 시나리오(모델에 대한 사전 지식이 없다고 가정)에서는
단일 숨김 층과 소규모의 숨김 뉴런(예: \code{hiddenSizes=1})으로 시작할 수
있습니다. 그런 후 검증 데이터 집합에서 더 이상 오류 감소가
관찰되지 않을 때까지 뉴런 수(및 층)를 점차적으로
늘릴 수 있습니다.
}
\item{ activations }{
이 인수는 숨김 및 출력 신경망 층에
대한 활성화 함수를 지정합니다. \code{ore.neural} 함수는 층당
단일 활성화 함수를 지원합니다. 뉴런은 층으로 그룹화되며,
각 층(뉴런의 부분 집합)에는 고유한 활성화 함수를 지정할
수 있습니다. 참고: 대상 변수 범위는 출력 활성화 함수의
범위와 일치해야 합니다. 예를 들어, 로지스틱 시그모이드를
사용하여 0 범위의 대상을 1(시그모이드 함수 범위)로 모델링할
수 있습니다. \code{ore.neural} 함수는 입력 데이터를 전처리하지 않으며,
적합한 데이터 정규화 및 배율 조정이 권장됩니다.
\code{activations} 인수가 \code{NULL}일 경우 각 숨김 층에 대한 활성화 함수는
양극 시그모이드이고, 출력의 경우 선형입니다.
\code{activations}이(가) \code{NULL}이(가) 아닌 경우
해당 크기는 마지막 요소가 출력 층과
일치하는 \code{length(hiddenSizes) + 1}이어야 합니다.
가능한 값은 다음과 같습니다.
\tabular{lll}{
\code{"atan"} \tab arctangent \tab \eqn{f(x) = \\arctan x }\cr
\code{"bSigmoid"} \tab bipolar sigmoid \tab \eqn{f(x) = \\frac{1 - e^{-x}}{1 + e^{-x}} }\cr
\code{"cos"} \tab cosine \tab \eqn{f(x) = \\cos x }\cr
\code{"gaussian"} \tab Gaussian \tab \eqn{f(x) = e^{-x^2} }\cr
\code{"gaussError"} \tab Gauss error \tab \eqn{f(x) = \\frac{2}{\\sqrt{\\pi}} \\int_0^x e^{-t^2} dt}\cr
\code{"gompertz"} \tab Gompertz \tab \eqn{f(x) = e^{-e^{-x}} }\cr
\code{"linear"} \tab linear \tab \eqn{f(x) = x }\cr
\code{"reciprocal"} \tab reciprocal \tab \eqn{f(x) = \\frac{1}{x} }\cr
\code{"sigmoid"} \tab logistic sigmoid \tab \eqn{f(x) = \\frac{1}{1 + e^{-x}} }\cr
\code{"sigmoidModulus"}\tab sigmoid modulus \tab \eqn{f(x) = \\frac{x}{1 + |x|} }\cr
\code{"sigmoidSqrt"} \tab sigmoid sqrt \tab \eqn{f(x) = \\frac{x}{\\sqrt{1 + x^2}} }\cr
\code{"sin"} \tab sine \tab \eqn{f(x) = \\sin x }\cr
\code{"square"} \tab square \tab \eqn{f(x) = x^2 }\cr
\code{"tanh"} \tab hyperbolic tangent\tab \eqn{f(x) = \\tanh x }\cr
\code{"wave"} \tab wave \tab \eqn{f(x) = \\frac{x}{1 + x^2} }\cr
\code{"entropy"} \tab entropy (output only) \tab \eqn{f(x) = \\log(1 + \\exp(x)) - yx }
}
예: \code{activations=c("wave", "tanh", "linear")}은(는) 2개의 숨김 층을 포함하는
신경망과 일치합니다. 첫번째 숨김 층에는
\code{"wave"} 활성화 함수가 지정되고, 두번째 숨김 층에는
\code{"tanh"} 활성화 함수가 지정되며, 출력(대상) 층에는
\code{"linear"}이(가) 지정됩니다.
}
\item{ gradTolerance }{
숫자 최적화 정지 조건: 원하는
경사 표준입니다.
}
\item{ maxIterations }{
숫자 최적화 정지 조건: 최대
반복 수입니다.
}
\item{ objMinProgress }{
숫자 최적화 정지 조건: 목표 함수 값의
최소 상대 변경사항입니다.
}
\item{ nUpdates }{
L-BFGS 업데이트 쌍의 수입니다.
}
\item{ scaleHessian }{
L-BFGS 업데이트에서 헤시안 행렬의 역을 배율할지
여부입니다.
}
\item{ lowerBound }{
가중치 초기화의 하한입니다(가중치가
제공되지 않은 경우 사용되지 않음).
}
\item{ upperBound }{
가중치 초기화의 상한입니다(가중치가
제공되지 않은 경우 사용되지 않음).
}
\item{ weight }{
가중치의 초기 벡터입니다(무작위 시작 지점이
생성되는 경우 NULL일 수 있음). 이전에 해결된
모델에서 솔루션을 사용할 때 유용합니다. 참고: 이전 신경망
아키텍처(각 층의 입력, 출력, 숨김 층 및 숨김 뉴런 수 및
활성 함수 유형)는 현재 아키텍처와 동일해야
합니다.
}
\item{ xlev }{
각 \code{\link[base]{list}} 변수에 대한
\code{\link[base]{character}}을(를) 지정하는
\code{\link[base]{levels}} 벡터의 이름이
지정된 \code{\link[OREbase:ore.factor-class]{ore.factor}}입니다.
}
\item{ trace }{
Big Data(out-of-core) 해결자의 보고 반복 로그입니다.
}
\item{ object, x }{
\code{ore.neural} 객체입니다.
}
\item{ newdata }{
\code{ore.frame} 객체, 테스트 데이터입니다.
}
\item{ supplemental.cols }{
\code{newdata} 데이터 집합의 예측 결과에 포함할
추가 열입니다.
}
\item{ \dots }{
추가 인수입니다.
}
}
\value{
\code{"ore.neural"} 클래스의 객체입니다. 일부 구성요소는 다음과 같습니다.
\item{ weight }{ 가중치 계수입니다. }
\item{ nLayers }{ 층 수입니다. }
}
\details{
\code{ore.neural} 함수는 Multilayer Feed-Forward 신경망 모델을 해결하며,
임의 개수의 숨김 층 및 임의 개수의 층별 뉴런을
지원합니다. L-BFGS 알고리즘은 기본 무제약 비선형
최적화 문제를 해결하는 데 사용됩니다.
\code{\link[OREbase:ore.options]{"ore.parallel"}} 전역 옵션은
Oracle R Enterprise 서버 내에서 사용할 선호 병렬도를
결정하기 위해 \code{ore.neural}에 사용됩니다.
}
\references{
Christopher Bishop (1996) \emph{Neural Networks for Pattern Recognition}
Simon Haykin (2008) \emph{Neural Networks and Learning Machines (3rd
Edition)}
Stephen Marsland (2009) \emph{Machine Learning: An Algorithmic Perspective}
\href{http://www.oracle.com/technetwork/database/database-technologies/r/r-enterprise/documentation/index.html}{Oracle R Enterprise}
}
\author{
Oracle \email{oracle-r-enterprise@oracle.com}
}
\seealso{
\link[OREstats]{model.matrix,formula-method} (\pkg{OREstats} package),
\code{\link[OREbase:ore.options]{ore.parallel}}
}
\examples{
###############################################################
# Two hidden layers (20 neurons in the first layer, 5 hidden #
# neurons in the second layer). #
# #
# Use bipolar sigmoid activation function for the first #
# hidden layer, hyperbolic tangent for the second hidden #
# layer, and linear activation function for the output layer. #
# #
# Note that the dimension (number of elements) of the #
# "activations" argument is always greater by exactly one #
# than the dimension of "hiddenSizes". #
# #
# Least-squares objective function. #
###############################################################
IRIS <- ore.push(iris)
fit <- ore.neural(Petal.Length ~ Petal.Width + Sepal.Length,
data = IRIS,
hiddenSizes = c(20L, 5L),
activations = c("bSigmoid", "tanh", "linear"))
ans <- predict(fit, newdata = IRIS,
supplemental.cols = c("Petal.Length"))
###############################################################
# Entropy objective function. #
###############################################################
INFERT <- ore.push(infert)
fit <- ore.neural(case ~ ., data = INFERT,
activations = c('entropy'), objMinProgress = 1E-7)
# Entropy (max likelihood) model with one hidden layer.
fit <- ore.neural(
formula = case ~ .,
data = INFERT,
hiddenSizes = c(40L),
activations = c("sigmoid", "entropy"),
lowerBound = -0.7,
upperBound = 0.7,
objMinProgress = 1E-12,
maxIterations = 300L)
}
\keyword{neural}
OHA YOOOO