본문 바로가기

AI73

[DLBasic] 10 -2 . Initialize weights in a smart way 저번 시간에 vanishing gradient라는 시그모이드 함수의 단점을 보완한 ReLU를 배웠다. 이번 시간에는 hinton 교수님이 발견하셨던 두 번째 문제점인 weight들을 어떻게 초기화할지를 배워보도록 하겠다. 이전 데이터에서 ReLU로 실험했을 때도 코드가 똑같은데 실행할 때마다 결과가 달라졌다. 그 이유는 weight을 random값으로 생성하도록 했기 때문이다. 예를 들어, 가중치를 모두 0으로 설정했을 때를 보자. x는 입력값이니 일단 0은 아니다. 그런데 weight이 0이면 기울기가 다 곱해질 때 gradient가 다 사라지는 문제점이 발생한다. 그렇기 때문에 weight을 잘 설정하는 것도 중요하다. 그래서 weight의 초기값을 설정할 때 주의해야할 점은 위와 같다. 만약 0이면.. 2020. 1. 20.
[DLBasic] 10 - 1. ReLU : Better non-linearity 이번 시간부터는 시그모이드보다 더 좋은 ReLU를 배워보도록 하겠다. 이전에 XOR을 해결하기 위한 NN으로 시그모이드 함수가 쓰였었고, 이런 함수들을 network에서는 activation function이라고 부른다. 그 이유는 network는 서로 연결이 되어있는 구조로, 하나의 값이 그 다음 값으로 전달될 때 어느 값 이상이면 active가 되고 작으면 active가 되지 않기 때문이다. 2단일 때 구현은 간단하게 위처럼 각각의 weight과 bias를 구해서 L2를 구하고 hypothesis에 넣었다. 위와 같이 3단일 때에도 마찬가지이다. 각각의 weight의 의미는 layer 1에서는 입력 2개, 출력 5개이고 layer 2에서는 입력 5개, 출력 4개, layer 3에서는 입력 4개, 출력.. 2020. 1. 19.
[DLBasic] 9-2. BackPropagation 저번 시간에 이어서 W1, W2, b1, b2를 어떻게 설정하는 것이 좋을지 알아보도록 하겠다. 우리가 최종적으로 구하고 싶은 것은 cost function이 최소가 되는 weight과 bias이다. cost function의 최소값을 구하려면 이전에도 사용했었던 gradient descent를 사용해야하고, 이 때 미분을 사용한다. 그런데 Neural Network에 이 미분을 적용하려면 노드의 개수도 많아지고 중간에 sigmoid 함수 등을 사용하기 때문에 input, 중간 값들이이 output값에 미치는 영향을 알기가 힘들고 계산하기도 힘들다는 문제가 있었다. 이전에도 설명했듯이 Back Propagation을 이용해서 뒤에서부터 에러를 전달해서 앞에서 어떻게 weight과 bias를 설정할지 정할.. 2020. 1. 17.
[DLBasic] 9-1. Neural Nets(NN) for XOR 저번 시간에 설명했듯이 큰 골치거리였던 XOR을 Neural Network로 해결할 수 있게 됨으로써 딥러닝의 큰 발전이 가능했다. 이번 시간에는 어떻게 XOR을 Neural Network로 해결할 수 있는지 알아보도록 하겠다. 기존의 neural network 하나로 AND나 OR은 해결할 수 있었지만 XOR은 neural network 하나로 해결할 수 없었기에 딥러닝의 큰 난관이었고, 이후에 neural network 여러 개로 해결할 수 있다는 점은 알아냈지만 각각의 weight과 bias를 학습하는 것이 불가능하다는 입장이었다. 위와 같이 weight이 5,5이고 bias가 -8인 NN에서 나온 값을 y1으로, weight이 -7,-7이고 bias가 3인 NN에서 나온 값을 y2로 입력을 받아서.. 2020. 1. 17.