[목차]
(0) 환경 설정 : DL4J 개발 환경 설정 및 예제 설명 (完)
(1) Data Iterator : 사용하고자 하는 데이터를 DL4J 에서 사용가능한 형태로 변환하는 작업 개발 필요
• Canova: The Rosetta Stone of Vectorization
(2) Net : 사용할 신경망의 형태가 어떤 것이 있는지 이해하고 선택, 활용 할 수 있어야 함
• Restricted Boltzmann machines (完)
• Convolutional nets (完)
• Recursive autoencoders (完)
• Recurrent nets: Long Short-Term Memory (LSTM) (including bi-directional LSTMs)
• Deep-belief networks
• Denoising and Stacked Denoising autoencoders
• Deep autoencoders
(3) Activation : Weight + Bias 결과 다음 적용할 함수 결정 (예 : SigMoid : Chap1 에서 설명한 것)
• ReLU <—
• Leaky ReLU
• Tanh
• Sigmoid
• Hard Tanh
• Softmax
• Identity
• ELU: Exponential Linear Units
• Softsign
• Softplus
(4) Loss&Objective Functions : 일부 데이터를 누락함으로써 더 Robust 한 모델을 만들 수 있다.
• Reconstruction entropy
• Squared loss
• Mean squared error
• Multi-class cross entropy for classification
• Negative log likelihood
• RMSE_XENT
(5) Hyperparameters : 모든 Layer 에 공통적으로 적용되는 파라메터로 숙지 필요
• Dropout (random ommission of feature detectors to prevent overfitting)
• Sparsity (force activations of sparse/rare inputs)
• Adagrad (feature-specific learning-rate optimization)
• L1 and L2 regularization (weight decay)
• Weight transforms (useful for deep autoencoders)
• Probability distribution manipulation for initial weight generation
• Gradient normalization and clipping
(6) Event Listener & Result Anal : 분석 중간 발생하는 이벤트를 받아서 처리 및 결과에 대한 검증 및 비지니스 연동 등
1. ReLu (Rectifier Linear Unit)
– 다른 Activator 인 Sigmoid 에 대해서 설명한 것 처럼 ReLu 는 Weight, Bias, Input 으로 이루어진 결과를 보정하는 역할을 하는
또 다른 종류의 알고리즘이다. 아래의 그래프에서 파란선은 원래 값, 빨간선은 ReLu 로 보정한 결과 값이다.
– ReLu를 어떤 경우에 사용할지 판단하려면 ReLu 의 특성을 알아야 한다. 그럼 ReLu 과 Sigmoid 등과 어떤 차이와 장단점이 있는가.
결국 확률로 표시하고자 할 경우는 Sigmoid 가 유용할 듯하고 다음 Hidden Layer 에 Real Number 를 넘겨야 하는 경우에는 ReLu 가
더 효과적인 그런 것인듯 하다..
(1) 차이점
– Sigmoid 는 0 ~ 1 사이의 값을 갖는 반면 ReLu는 0 ~ Infinite 의 값을 갖는다. 그 말인 즉슨 Sigmoid 는 확률적인 표현만 가능한 반면
ReLu는 다음 Hidden Layer에 실제 값에 가까운 값을 전달할 수 있다는 것이다. (굉장히 큰 차이군..)
– Sigmoid 등은 탐색 과정에서 사라지는 경우가 있는데 ReLu는 그렇지 않다 (??)
(2) 장점
– Hidden Layer 의 Sparsity 를 증가 시킨다.. 결국 Density 가 출어서 Perfomance 가 올라간다는 말 같은데 어떻게 인지 모르겠음..
– 위에 말한 것처럼 Sigmoid 나 tanh 처럼 탐색중 사라지는 문제가 없다.
– 사전 트레이닝 과정 없이도 효과적으로 Net 에 트레이닝이 된다
– RBM 에 실제 데이터를 적용할 수 있다.. (위에 말한거다..)
[참조]
DL4J 공식 문서에서도 아래와 같은 예를 들어 설명하고 있는데, 결국 위에 설명된 내용중 실수 값을 전달할 수 있다가 핵심이다.
아래 그림을 그리면서 설명한 예제는 집값에 영향을 주는 요소를 Input , 예상 집값을 Ouput 으로 NN 은 설계한 예를 들은 것
결국 Hidden Layer 에서 Activator 로 Sigmoid 를 사용했다면 예상 집값은 0 ~ 1 값의 SUM 이 되어 얼토 당토 않은 결과가 나왔겠지만
하지만 ReLu 를 써서 실수 값을 예상할 수 있다. 뭐 이런 내용이다.