본문 바로가기

인공지능12

Batch Normalization [Batch Normalization] 데이터의 distribution이 처음엔 적절히 분포되어 있었지만, 여러 layer들을 거치면서 점점 변형이 된다. 이런 현상을 Internal Covariate Shift라고 한다. 즉, Internal Covariate Shift를 막기 위해서 Batch Normalization이 필요하다. Iayer에 input을 들어오는 데이터의 distribution을 계속 Normalization 시켜서 데이터의 distribution이 항상 일정하게 유지되도록 한다. x’ 값에 학습이 되는 파라미터를 적용한 다음에 Iayer의 새로운 input 값으로 추가한다. [code] Create Network 이전에 Relu 함수에서 사용한 code와 거의 일치한다. Relu .. 2023. 8. 20.
Dropout [Dropout] Dropout이란, Under-fitting 되거나 Over-fitting이 되지 않도록 하는 regularization을 말한다. 학습할 땐 일부의 node만을 사용하고 test할 때는 node를 모두 사용하는 방식으로 regularization 할 수 있다. 사용할 일부의 node는 random하게 선정한다. [code] Create Network 이전에 Relu 함수에서 사용한 code와 거의 일치한다. Relu 함수에서 사용한 code와 다른 점은 network를 구성할 때 dropout() 함수도 추가하여 model을 구성한다는 것이다. rate는 몇 %의 node를 끌 것인지를 나타낸다. [code] Define loss loss 함수들을 정의할 때 training 옵션 값이.. 2023. 8. 20.
Weight Initialization [Xavier Initialization (Glorot Initialization)] loss 그래프에서 loss가 최저인 지점을 찾는 것이 network의 목표다. 하지만 실제 loss 그래프는 굉장히 복잡하기에 그래서 local minimum에 빠지거나 saddle point에 도달하게 되는 위험이 있다. 이때, 출발점을 잘 설정한다면 위험 없이 global minimum에 도착할 수 있다. 이전까지 사용했던 weight initialization은 평균이 0, 분산이 1이었다. Xavier Initialization은 평균이 0, 분산이 2/Channel_in + Channel_out이다. Channel_in은 input으로 들어가는 Channel의 개수를 말하고, Channel_out은 outpu.. 2023. 8. 20.
Relu [Problem of Sigmoid] 1. Network에 데이터를 입력해서 나온 output과 ground-truth 값의 차인 loss를 구한다. 2. 구한 loss 값의 미분 값을 Backpropagation 해서 Network를 학습시킨다. 이때 Backpropagation으로 전달되는 loss를 미분한 것을 gradient라고 한다. 3. gradient 값은 그래프의 기울기 값이라고 할 수 있는데, sigmoid 함수 그래프의 가운데 부분은 0보다 매우 크다. 반면에 극단 좌표의 gradient값은 0에 가까워 매우 작다. 4. Network가 deep할 경우 sigmoid 함수가 많아지고, 매우 작은 gradient 값들이 sigmoid 함수의 개수만큼 곱해진다. 결국 gradient 값이 .. 2023. 8. 13.
XOR 문제 딥러닝으로 풀기 [Neural Net] XOR 문제를 3개의 network로 풀어보자. 1. 두 개의 입력 값 X1, X2에 대하여 weight, bias 값과 함께 WX+b 연산을 진행한다. 2. 위 과정을 두 개의 유닛에서 진행하여 출력 값 Y1, Y2를 얻는다. 3. 출력 값 Y1, Y2에 sigmoid 함수를 적용하여 최종 값 Y1, Y2를 얻는다. 4. 두 개의 입력 값 Y1, Y2에 대하여 weight, bias 값과 함께 WX+b 연산을 진행한다. 5. 출력 값 Y’에 sigmoid 함수를 적용하여 최종 값 Y’를 얻는다. 6. 최종 값 Y’의 값이 XOR 연산 결과 값과 일치하는지 확인한다. [Forward propagation] 위 계산 과정을 다음과 같이 두 개의 유닛으로 구성된 하나의 Neural N.. 2023. 8. 13.
딥러닝의 기본 개념 [Ultimate dream: thinking machine] 인간의 뇌는 굉장히 복잡한 반면에 뉴런이라고 불리는 유닛은 굉장히 단순하게 동작이 된다. 어떤 input이 들어오면 그 input에 weight를 곱한 만큼 신호가 들어온다. 신호의 값들이 합쳐지고 통과하면서 bios가 더해지는데 이 최종 값이 특정 값 이상이면 활성화되고, 특정 값을 넘지 못하면 활성화되지 않는다. [Activation Functions] 뉴런의 동작 방식을 이용해 Activation Function을 만들었다. [(Simple) XOR problem: linearly separable?] Activation Function을 이용하여 직접 Hardware를 구현했다. AND/OR 문제의 경우 선형적으로 구분이 가능하기에 쉽.. 2023. 8. 13.