[DL4J]Boltzmann Machines

K-029[목차]

(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. Restricted Boltzmann machines
Restricted Boltzmann machines 을 한 문장으로 표현하면 제한된 반복적인 확률 기반 신경망 알고리즘 정도 될 것이다.

여기서 제한되었다라는 것은 Chap1 에서의 도식화된 신경망을 보면 Layer 가 나누어진것을 볼 수 있는데 여기에서

동일한 Layer 간에는 연결관계를 표시하지 않겠다는 이야기로 신경망을 조금더 간단화 할 수 있을 것이다.

반복적인 확률기반 신경망 알고리즘이라 함은 Backword Propagation 을 이야기 할 수 있을 듯한데 이는 초기에 세팅한

Weight 값과 Bias 값을 실제 데이터 값과 비교하여 Error 수치를 추출하고 이를 다시 Wegight 와 Bias 에 반영하는 과정을

말함이다.

2. 신경망 기본 개념

K-023

K-029

Chap1 에서도 설명했던 것과 유사한 개념으로 각 뉴런은 Weight , Bias, Input 값과 output 값으로 구성된

Activation 이라고 볼 수 있다. 보라색은 Input Layer , 분홍색은 Hidden Layer , 표시되지는 않았지만

결과값은 output Layer인데.. 여기서는 표시가 안된 것으로 보인다. 실제 예제 코드에서도 사이즈가 2로

지정한 것이 input, Hidden , output 각 1개 인 것으로 보아 output Layer 는 카운팅에서 빼는 것인가 싶기도하다.

K-026

위의 그림은 layer1의 결과 값이 Layer2 의 input 값으로 활용되는 Multi Layer를 도식화 하고 있다.

위와 같은 방법으로 Layer 의 Depth는 계속 깊어 질 수 있다. 물론 Depth 가 깊어 질수록 퍼포먼스는

떨어 지겠지만 말이다. .

멀티 Layer 를 구성하고 각 뉴런을 커스터마이징하는 개발 방법은 추후에 정리 하도록 한다.

3. 학습 Process (RECONSTRUCTION)

하지만 위와 같이 정방향으로 진행되는 Process 만 있다면 이것을 Deep Learning 이라고 부를 이유가 없다.

 K-027
K-029

실제로 RBM 은 위와 같은 형태로 적정 Weight 값과 Bias 값을 훈련신다. 대략적으로 말로 설명하자면 아래와 같을 것이다.

(1) 초기 값을 지정한다.

(2) 실제 데이터로 초기 값과의 오차를 구한다.

. 위의 식을 거꾸로 연산하면 a 가 인풋이되고 x 가 아웃 풋이 되는 형태라고 생각하면 된다.

(3) 오차와 초기값이 적어지는 방향으로 weight 값과 bias 값을 조금식 수정을하는데 그 변화 정도가 코드에서 보면

학습 정도라고 되어있는 파라메터이다. 아래 그림에서 보는 것과 같이 점점 데이터와의 오차를 줄이는 방향으로

변경되어 간다.

K-028

(4) 실제로 모델을 활용할때는 정방향으로 데이터를 진행시켜서 OUTPUT 데이터를 도출하면 결과 값은 확률로 나온다.

각 OutPut 노드 별로 확률이 얼마다 이런식으로~

※ 이렇게 하고 보니.. R의 RNN Package 와의 차이도 애매하고.. DL쪽은 더 많은 학습이 필요할 듯하다..

Two Depth 이상의 신경망의 구성이라던지, 뉴런을 논리회로 식으로 구성하는 방법이라던지.. 적극적으로

프로그래머가 신경망 형태에 개입할 수 있는 방법을 찾아 봐야 할 듯하다…

One thought on “[DL4J]Boltzmann Machines”

  1. Hi there very nice site!! Man .. Excellent .. Superb .. I’ll bookmark your website and take the feeds additionally…I’m glad to search out so many useful info here in the put up, we need work out more strategies on this regard, thanks for sharing. . . . . .

Leave a Reply

Your email address will not be published. Required fields are marked *