목록Artificial Intelligence/Basic Neural Network (9)
엔지니어가 되고 싶은 공돌이
1. 학습률 조정을 통한 성능 개선 - 학습률을 변경함으로써 성능을 변화시킬 수 있다. - 너무 크거나 작은 학습률은 성능을 오히려 저해 시킬 수 있다. 2. 반복 수행을 통한 성능 개선 - 데이터 모음에 대한 학습을 여러번 반복함으로써 신경망의 성능을 개선할 수 있다. - 주기(epoch): 한 번의 수행 ex) 5번의 주기학습은 전체 학습 데이터 모음에 대해 학습을 10번 반복한다는 것을 의미. - 하지만 너무 많은 반복은 오버피팅을 발생하게 해 오히려 성능을 떨어뜨린다. - 그러므로 각각의 학습률과 주기에 대한 다양한 조합에 대하여 여러번 실험함으로써 경사하강법에 내재되어 있는 임의적 요소의 효과를 최소화하여 성능을 극대화 할 수 있어야 한다. 3. 신경망 구조 변경하기 - 은닉노드의 개수를 변경해..
1. 입력 값 - 시그모이드 함수를 기준으로 x 값이 너무 크게 되면 기울기가 작아짐 = 학습이 제한됨 - 작은 기울기는 곧 학습 능력이 제한된다는 것을 의미하고 이를 일컬어 신경망에 포화(saturation)가 발생했다고 한다. - 컴퓨터는 매우 작거나 큰 수를 처리할 때 정확도를 잃을 수 있으므로 매우 작은 수 도 문제가 될 수 있다. 해결방법: 입력 값을 0.0~1.0 사이에 놓이도록 그 크기를 조절한다. 때로는 입력값이 0 이 되지 않도록 작은 값을 더하기 도 한다. 입력 값이 0이면 출력값도 0으로 설정돼 가중치 업데이트 수식에 의한 학습능력이 죽을 수 있기 때문. 2. 결과 값 - 시그모이드 함수의 결과 값 즉, 출력 값은 0.0~1.0 사이의 값을 가진다. (0.0, 1.0의 값을 가지지는 ..
1. 경사 하강법 - 오차를 바탕으로 가중치를 업데이트하는 대표적인 방법 중 하나 - 인공신경망이 폭발적으로 발전하게 되는 계기가 됨 - 복잡한 함수(오차)에서 한 스텝 한 스텝 천천히 내려오며 함수의 최저점(오차를 최소화)을 찾는 기법. 이때 우리는 이 함수에 대한 이해가 없을 수 있다. - 정확한 해답을 못 찾을 수 도 있다. - y가 오차함수라면 y를 최소화 할 수 있는 x값을 찾는 것이 목표. - 양의 기울기라면 x값을 감소시키고, 음의 기울기라면 x값을 증가시킨다. - 스탭의 간견을 적절하게 조절해나가서 오버슈팅이 나지 않도록 한다. - x 변수 하나만 보여주는 예제지만 실제문제를 해결할 때는 여러 변수를 구해야 한다. 변수가 여러개이면 최저점과 하강 지점은 여러개가 될 수 있고 잘못된 하강지점..
1. 가중치 업데이트 - W11 을 업데이트하기 위해 e1의 W11/(W11+W21) 만큼을 사용. - W21 을 업데이트하기 위해 e1의 W21/(W11+W21) 만큼을 사용. 2. 역전파 - 출력계층의 오차로 가중치 Who를 업데이트 한다. 이 때 오차는 실제 값에서 출력 값을 뺀 값이다. - 은닉계층의 오차로 가중치 Wih를 업데이트 한다. 은닉노드에 대해서는 목표로 하는 출력 값이 없다. 그럼 어떻게 오차를 구한다는 거지? 은닉노드는 앞 계층의 연결된 노드들로부터 오차를 모두 받아 재조합해서 은닉계층의 오차로 사용한다. ehidden,1(은닉계층 1번노드의 오차) = eoutput,1*(W11/(W11+W21)) + eoutput,2*(W12/(W12+W22)) - 순전파에 행렬을 적용시켜 연산을..
- 결과 값과 실제 값의 차이를 오차라고 하는데 우리는 이 오차를 바탕으로 가중치를 업데이트하며 학습을 진행한다. - 오차를 각각의 노드에 나누어 분배를 하는데 차별을 두어 분배한다. (이 방법 외에도 여러가지 방법이 존재) - 더 큰 가중치를 가진다는 건 오차의 형성에 더 큰 영향을 줬다는 의미. - 위 방법의 전파방향은 순전파와 방향이 반대이므로 역전파(back propagation)이라고 부른다.
순전파: 초기 입력신호를 가중치와 조합하여 마지막 계층 쪽으로 전달해나가는 연산의 과정. 1. 신경망 연산 - 주의: 활성화 함수는 첫번째 계층을 제외하고 각 노드에 적용된다. - 가중치는 임의의 값으로 초기화되어있다. - 가중치에는 곱연산이 적용된다. - 계층 2에서 노드 1의 입력 값 = (1.0*0.9) + (0.5*0.3) = 0.9 + 0.15 = 1.05 - 계층 2에서 노드 1의 출력 값 = 1/(1+0.3499) = 0.7408 참고로, 시그모이드 함수의 결과값은 항상 0과 1사이의 값을 가지게 된다. - 행렬을 이용하면 위 처럼 수작업을 할 필요없이 더 빠른 연산을 수행할 수 있다. X(다음 노드로의 입력 행렬) = W(가중치 행렬) X I(입력값 행렬) O(노드의 출력 행렬) = sig..
1. 전통적인 컴퓨터와 동물의 뇌의 가장 큰 차이 전통적인 컴퓨터: 데이터를 순차적으로 처리 동물의 뇌: 데이터를 순차적이 아니라 병렬적으로 처리 2. 뉴런 : 동물학적 뇌에서 기본단위 - 뉴런은 전기 입력을 받으면 또 다른 전기신호를 발생시킴. - 뉴런은 입력을 받았을 때 즉시 반응하지 않고 입력이 누적되어 어떤 수준으로 커진 경우에만 출력을 함. 즉, 입력 값이 어떤 분계점에 도달해야 출력이 발생하는 것. 활성화 함수(activation function): 입력신호를 받아 특정 분계점을 넘어서는 경우에 출력신호를 생성해주는 함수. 1) 계단 함수 - 입력값이 작으면 출력은 0, 하지만 입력이 분계점 이상이 되면 출력값은 갑자기 커짐. 하지만 우리가 살고 있는 이 세상은 아날로그 형태로 존재하므로 위 ..
1. 분류(classify) - 1장에 나온 예측 기계를 예측자(predictor)라고 부른다. - 앞에서 나온 c는 선형관계 그래프에서 보았을 때 일차직선의 기울기가 될 수 있다. 애벌레와 무당벌레의 데이터를 그래프로 표현하면 다음과 같고 이를 직선을 바탕으로 분류한다고 해보자. 우리는 이제 이 분할선을 분류자(classifier)로 사용할 수 있다. 위와 같이 애벌레인지 무당벌레인지 모르는 데이터가 들어왔지만 우리는 분류자를 통해 애벌레 데이터가 들어왔음을 확인할 수 있다. 2. 분류자 학습 예측자 또는 분류자에게 실제 값을 알려주는 역할을 수행하는 예제 데이터를 학습데이터(training data)라고 부른다. y = Ax (A의 초기값은 0.25) 길이 = 기울기 X 폭 위 분류자는 애벌레와 무당..
1. 간단한 역사 - 1950년대 들어 학자들이 인공지능을 수식으로 풀어내기 시작하면서 인공지능을 실제로 만들 수 있다는 전망이 팽배해짐. 이에 따라 인공지능에 대한 도전히 급속히 늘어나기 시작. - 하지만 인공지능을 만들어내는 것은 생각보다 훨씬 어렵다는 것이 증명되면서 연구활동은 정체되기 시작. 1970년대 심각한 침체기로 접어들게 됨. - 이러한 문제를 해결하기 위해 생물학으로부터 받은 영감을 기반으로 신경망이라는 기술을 개발하기 시작함. 이 신경망(Neural Network)은 얼마 안 지나 인공지능 분야에서 가장 강력하고 유용한 방법으로 자리매김함. 2. 인공지능이 필요한 이유 - 컴퓨터는 연산 측면에서는 인간보다 매우 빠르다. 하지만 이미지를 인식하는 등의 작업은 컴퓨터에게 매우 어렵다. - ..