본문 바로가기

데이터 다루기/신경망

(20)
[신경망] 12. Batch Normalization 안녕하세요, 이번 포스팅에서는 Batch Normalization에 대해서 배워보도록 하겠습니다. Batch Normalization은 우리가 일반적으로 머신러닝을 할 때 사용하던 Feature Normalization과는 차이가 있습니다. Feature Normalization는 Input 변수에 적용되며, Input 변수간의 상관관계를 없애거나, 모든 변수간에 일정한 평균과 분산을 가지도록 정규화시키는 용도로 사용됩니다. 신경망에서의 Feature Normalization의 용도는 0으로 수렴하는 문제를 없애고, learning 속도를 높이는 데에 있습니다. 하지만 Feature Normalization은 Input 변수에만 정규화를 하므로, 신경망이 깊어질수록 효과는 사라지게 됩니다. 이를 극복하기..
[신경망] 11. Weight Initialization 안녕하세요, 이번 포스팅에서는 Weight Initialization에 대해서 배워보도록 하겠습니다. 위와 같은 신경망에서 초기 Weight값을 0으로 주는 것은 일반적으로 보입니다. 하지만 그렇게 된다면, 각 뉴런들이 학습을 할 때, 같은 역할을 하게 되며, gradient 또한 같아질 것입니다. (Same update) 저희가 신경망 모델을 사용하는 이유는 각 뉴런별로 y를 예측하는 데 있어서 가중치를 주어서 어떠한 Feature가 y의 예측에 가장 중요한지를 파악하는데 있는데, 이러한 역할이 없어지는 것이지요. ​ 즉, 신경망 학습에 있어서 초기 Weight에 어떠한 값을 주느냐는 중요한 문제로 받아들여집니다. 이 문제에 대해 첫번째로 제시된 방법은 다음과 같습니다. 바로 Small random n..
[신경망] 10. Parameter Search Method 안녕하세요, 이번 포스팅에서는 딥러닝에서 뿐만아니라 전반적으로 사용되는 Parameter 선택 방법을 알아보도록 하겠습니다. 우선 Hyperparameter 라는 개념에 대해서 설명해드리겠습니다. Hyperparameter는 기본적인 Model Parameter와는 다른 개념입니다. Model Parameter는 모델을 학습하면서 데이터에서 얻을 수 있는 Parameter를 말합니다. 예를 들어서, 표본평균이나 표본분산은 모델 학습전에는 정해지지 않은 Parameter이지만, 데이터가 들어옴으로써 그 데이터로부터 얻을 수 있는 Paramerter입니다. 하지만 Hyperparameter는 학습을 통해서 얻을 수 있는 것이아니라, 학습하기 전에 정해주어야 하는 Parameter 입니다. 예를 들어서, 신경..
[신경망] 9. Deep Learning 안녕하세요, 이번 포스팅에서는 딥러닝 (Deep Learning)에 들어가기 앞서 기초를 다루어 보도록 하겠습니다. 딥러닝은 사실상 이름만 다른 신경망입니다. 특히 신경망중에서 Layer수가 많은 다층 신경망이죠. 신경망 이론이 각광을 받기 시작한건 최근 AI기술 (알파고)이 세계를 놀라게 한 이후이기 때문에 사람들이 딥러닝이 새로운 학문이라고 생각하곤 합니다. 하지만 신경망 이론은 사실상 1943년에 McCulloch, Warren S., and Walter Pitts.가 발표한 “A logical calculus of the ideas immanent in nervous activity”에서 시작되었습니다. 과연 이제서야 딥러닝 기술이 각광받는 이유는 무엇일까요?? ​ 이번 포스팅에서는 이 질문에 대..
[신경망] 8. 오토인코더 (AutoEncoder) (2) 안녕하세요, 저번 포스팅에서 오토인코더를 왜 쓰는지에 대해서 배웠습니다. 이번 포스팅에서는 오토인코더의 종류에 대해서 배워보도록 하겠습니다. 저희가 배워볼 오토인코더는 Sparse AutoEncoder, Stacked AutoEncoder, Denoising AutoEncoder입니다. ​ 1. Sparse AutoEncoder Sparse AutoEncoder는 저희가 배웠던 AutoEncoder 와는 반대로 Hidden layer 내의 Node의 수가 더 많아집니다. 그렇다면 Sparse AutoEncoder는 왜 쓸까요?? 그 이유는 바로 overfitting 문제를 줄이는 효과가 있기 때문입니다. 실제로 AutoEncoder의 문제점중 하나로 Feature를 압축하다보면, 다른 데이터가 들어와도 ..
[신경망] 7. 오토인코더 (AutoEncoder) (1) 안녕하세요, 이번 포스팅에서는 오토인코더에 대해서 배워보도록 하겠습니다. 오토인코더는 위의 그림에서 보시다시피 입력값을 받아들여, 같은 크기로 출력합니다. 하지만 히든 레이어에 존재하는 노드의 수가 Input 과 Output 노드 보다 작은것을 볼 수 있습니다. 이는 쉽게 말해서 데이터를 압축한다고 할 수 있습니다. 출력되는 데이터의 개수가 입력되는 데이터의 개수와 같은데 압축된다는 것이 잘 이해가 안될 수 있습니다. 예를 들어서, 사람 얼굴은 인식하는 데 있어서 본래에는 눈 코 입 귀가 전부 Feature로 사용될 때, 만약 귀에 대한 Feature가 얼굴 인식에서 필요가 없다면 오토인코더를 통해서 귀에 대한 Feature을 없앨 수 있습니다. 오토인코더는 머신러닝에서 PCA와 비슷한 역할을 한다고 생..
[신경망] 6. 활성화 함수 (Activation Function) 안녕하세요, 이번 포스팅에서는 활성화 함수에 대해서 배워보도록 하겠습니다. 역전파 알고리즘에서 배웠듯이 Weight에 의해서 이전 레이어 있던 값들이 가중합이 활성화 함수에 들어가게 됩니다. 아래의 그림을 보시죠. 저희는 역전파 알고리즘에서 활성화 함수로 Sigmoid Function을 사용했었습니다. 하지만 실제로 활성화 함수는 Sigmoid Function말고 다양한 종류가 있습니다. 우선 시그모이드 함수부터 살펴보도록 합시다. ① 시그모이드 함수 시그모이드 함수는 보시다시피 0~1사이의 값을 가지며, 0을 기준으로 양수를 가지면, 0.5보다 커지고 음수를 가지면 0.5보다 작아집니다. 이러한 특성 때문에 threshold 0.5를 기준으로 binary classifier 함수로 자주 쓰입니다. 하지..
[신경망] 5. 역전파 알고리즘 (Backpropogation) 안녕하세요, 오늘은 신경망에서 Weight들을 업데이트 시키는 방법에 대해서 배워보도록 하겠습니다. 역전파 (Backpropogation) 알고리즘은 최종 출력물(output)에서 존재하는 오차를 줄이기 위해 뒤에서 부터 앞으로 Weight를 업데이트 하는 방식입니다. 예를 든다면, 위의 그림에서 output layer에서 나온 오차 ε을 줄이기 위해서 우선 hidden layer 2 에서 output layer로 향하는 Weight를 업데이트 하고, 그 후, hiddenlayer 1에서 hidden layer2로 향하는 Weight를 업데이트하고,마지막으로 input layer에서 hidden layer1 으로 향하는 Weight를 업데이트합니다. 즉, output layer에서 input layer ..