Programmer Application Note

2017년 7월 26일 수요일

신경망의 학습과정

오후 6:57 Posted by PAN.SPOT , , No comments

1. 신경망의 학습
   신경망의 학습이란 학습데이터를 가지고 신경망의 가중치 와 바이어스를 업데이트 하여 오차를 줄이고 원하는 결과값을 얻을 수 있도록 하는 기법이다.

2. 오차의 역전파
    신경망의 학습 과정을 통해 입력데이터에 대한 결과를 가지고 정답과 비교한 오차를 출력층 -> 은닉층으로 순전파의 반대 방향으로 가중치를 업데이트 해 나가는 방법을 말한다.

3. 손실함수(비용함수,오차함수)
   여러 이론책에 다양하게 표현되나 같은 뜻을 가지고 있다.  신경망의 성능을 나타내고자 하는 지표로 신경망의 역전파 과정에 사용 된다.
   손실함수로는 평균 제곱 오차(MSE) 와 교차 엔트로피 오차(cross entropy,CEE) 함수가 가장 많이 사용 된다.  교차 엔트로피 함수는 오차가 커질 수록 비용이 급격하게 증가한다.

4. 원-핫 인코딩
   학습과정에서 정답을 표기할 때 원-핫 인코딩 방식을 사용 하는데  한노드만 1로 출력 하고 나머지는 0으로 출력하여 정답인 노드를 1로 출력 하는 분류 모델에서 사용 방식 이다.

5. 가중치 값을 갱신하는 방법
   경사하강법 (DG) : 100개의 학습 데이터가 있다면 가중치값이 100번 갱신된다.
   배치  : 모든 학습 데이터의 하나로 묶어 가중치를 한번만 갱신 할 수있도록 하는 기법
   미니 배치 : DG와 배치방식을 섞어 놓은 개념으로 전체 학습 데이터 중 일부 데이터만 골라서 배치 하는 방법
  딥러닝에 많이 사용되는 방법은 미니 배치 방식 이다.

6. 경사하강법에서의 가중치와바이어스 갱신 방법
   경사 하강법이란 손실함수 즉 결과가 오차가 주어지는 함수 에서 최솟값을 찾아가는 과정이라고 할 수 있다. 이 때 기울기를 이용하는데 손실 함수에서 기울기가 최소화 되는 값을 향해 조금씩 가중치와바이어스를 갱신 한다. 이때 기울기는 손실 함수를 미분하여 얻을 수 있다.
   딥러닝 분야에서는 확률적 경사 하강법(SDG) 확률적으로 무작위로 골라낸 데이터에 대해 수행 하는 경사하강법을 이용한다.


7. 학습률 (learning rate)
   학습률은 미분한 손실함수의 값에서 일정 값을 곱하여 가중치와 바이어스의 갱신률을 조정 하는데 사용되어 진다.



참고:
딥러닝첫걸음 - 머신러닝에서 컨벌루션 신경망까지 / 김성필 | 한빛미디어
밑바닥부터 시작하는 딥러닝 - 파이썬으로 익히는 딥러닝 이론과구현 / 사이토고키 | 한빛미디어
신경망첫걸음 - 수포자도 이해하는 신경망 동작 원리와 딥러닝 기초 / 타리크라시드 | 한빛 미디어

신경망의 추론과정

오전 1:01 Posted by PAN.SPOT , , No comments
1. 신경망의 순전파
   입력층에서 들어오는 데이터는 각각의 가충지를 곱하고 바이어스를 더하여 은닉층의 노드로 전달되며, 전달된 값은 활성함수를 통해 출력된다. 이를 수치로 나타내면 다음과 같다.
  가중합 : v = w1x2 + w2x2 + .... + b (바이어스)  = wx + b
  출력 :  y = φ(v) = φ(wx + b)      φ = 활성함수



2. 활성함수
    뇌의 뉴런은 입력값이 바로 다른 뉴런으로 전달 되지 않고 어느 분계값에 도달 해야지만 출력값을 생성한다. 입력 신호를 받아 특정 분계점을 넘어서는 경우 출력 신호를 생성 해주는 함수는 활성 함수라 한다. 가장 간단하는 계단 함수가 있으며 계단 함수보다 훨씬 부드러운 S자 형태를 가지는 시그모이드 함수가 활성 함수로 많이 사용되며 출력이 (0~1)로 제한된다. 현시점에서는 시그모이드 함수보다 ReLU 함수가  현업에서 많이 사용된다.




3. 출력층에서의 활성함수
  일반적으로 출력층의 활성함수는 다르게 사용되는데 회귀문제는 항등함수(그대로 출력) 이진분류에서는 시그모이드 함수 다범주분류에서는 소프트맥스 함수를 사용 하는 것이 일반적이며, 소프트맥스 함수의 경우 출력값의 총합이 1인 함수로 출력값의 확률을 계산할때 용이 하다. 다만 지수 계산이 필요하므로 학습에서만 사용되며, 추론 과정에서는 비용이 많이 들지 않는 활성 함수를 사용하는 경우가 많다.

4. 행렬을 이용한 가중합 계산 방법
   신경망 관련서적에는 행렬로 계산 되는 다양한 방법들이 있는데 대중적으로 많이 쓰이는 방법을 사용 하도록 한다.
   
일반적으로 행렬을 표기 할 때 전치행렬 성질을 이용하여 신경망의 좌측 입력 부분을 행렬의 뒤에 연산 한다. 그러므로 입력값은 1차원 벡터를 2차원의 행렬로 변환 후 전치행렬을 이용하여 행과 열을 서로 바꿔야 한다.
전치행렬 성질 : (XW)^T = W^TX^T

5. 배치처리
   일반적으로 입력데이터를 하나씩 계산 하는것 보다 한꺼번에 많은 데이터를 하나로 묶어서 처리하는것이 속도면에서 훨씬 빠르다. 컴퓨터의 수치 계사는 큰 배열을 효율적으로 처리 할 수 있으며 데이터를 읽는 횟수를 줄여 속도를 향상 시킬 수 있다. 이를 행렬로 보면 아래와 같이 가능 하다.
 
해당 행렬은 784개(28x28)의 픽셀가진 이미지를 100장씩 묶어 처리를 하면 출력층의 노드가 10개일 때 100X10의 행렬로 출력 된다.



참고:
딥러닝첫걸음 - 머신러닝에서 컨벌루션 신경망까지 / 김성필 | 한빛미디어
밑바닥부터 시작하는 딥러닝 - 파이썬으로 익히는 딥러닝 이론과구현 / 사이토고키 | 한빛미디어
신경망첫걸음 - 수포자도 이해하는 신경망 동작 원리와 딥러닝 기초 / 타리크라시드 | 한빛 미디어


신경망이란

오전 12:59 Posted by PAN.SPOT , , No comments
1. 신경망
   머신러닝의 모델 중 하나 이며, 실제 뇌의 뉴런들의 연결을 본따서 만든 것으로
실제뇌는 정보를 저장하는 공간이 따로 없기 때문에 신경세포는 다른 신경 세포에서 오는 신호를 받아 자신의 신호를 내보내는 역할만 하고 이런 신경 세포들의 연결 된 네트워크이며, 신경 세포들의 연결 상태가 바로 뇌에 저장된 정보를 나타낸다.
신경세포 = 노드 , 신경세포들의 연결 = 연결 가중치

2. 신경망의 종류
   그림과 같이 단층 신경망과 다층 신경망이 있으며 , 신경망 성능 향상을 위해서는 다층 신경망을 이용한다. 다만 연산속도등을 고려해서 신경망을 설계한다. 최든 현업에서 사용되는 신경망은 대부분 심층 신경망을 사용한다. 신경망은 크게 입력층,은닉층,출력층으로 나뉜다.


3. 단층 신경망의 한계
   단층 신경망의 경우 XOR 같은 선형 함수로 분리 되지 않는 문제에서는 사용 할 수 없다.




참고:
딥러닝첫걸음 - 머신러닝에서 컨벌루션 신경망까지 / 김성필 | 한빛미디어
밑바닥부터 시작하는 딥러닝 - 파이썬으로 익히는 딥러닝 이론과구현 / 사이토고키 | 한빛미디어
신경망첫걸음 - 수포자도 이해하는 신경망 동작 원리와 딥러닝 기초 / 타리크라시드 | 한빛 미디어


 





2017년 7월 25일 화요일

머신러닝이란

오후 11:04 Posted by PAN.SPOT , No comments

1. 인공지능 머신러닝 딥러닝의 관계
    인공지능 > 머신러닝 > 딥러닝
    딥러닝은 머신러닝의 일종이고 머신러닝은 인공지능의 일종이다.

2. 머신러닝이란
   데이터를 이용한 모델링 기법으로 기계가 학습 데이터를 이용 하여 데이터를 분석 해서 모델을 스스로 찾아내는 것이다.

3. 학습(classification)과 추론(inference)
   학습이란 데이터와 데이터에 대한 결과값으로 최적의 모델(신경망)을 찾아가는 과정을 말한다.
   추론이란 이렇게 학습된 모델(신경망)에 입력 데이터를 넣어 결과를 예측하는것을 말한다.

4. 일반화(generalization)
   학습데이터와 입력데이터가 달라지더라도 성능의 차이가 나지 않게 하는 것을 말한다.

5. 과적합(overfitting)
   그림에서 처럼 모델(곡선)이 동그라미와 세모를 분류 과정 중에 상대 진형으로 깊숙히 침투한 잡음 섞인 데이터 까지 모두 고려하여 만들다 보니 일반화 성능이 떨어지는 현상을 말한다. 훈련데이터가 작고 심층신경망으로 갈수록 더 잘 발생한다.


6. 과적합에 대처하는 정칙화(regularization)와 검증(validation)
   정칙화는 모델의 형태를 최대한 간단히 만들려는 수치해석적인 기법 모델의 성능을 약간 희생 하더라도 모델이 과적합에 빠지지 않게 하려는 의도이다.
   검증은 일반적으로 입력데이터의 차원이 높기 때문에 과적합 여부를 쉽게 판단하기 힘들다 그래서 학습 데이터의 일부를 떼어 내어서 이를 성능 검증용으로 사용하는 기법을 말한다.

7. 지도학습,비지도학습,강화학습
   지도학습이란 입력과 정답을 주어서 학습하는 방법
   비지도학습이란 입력만 주어서 문제의 형태나 유형을 나누는 학습
   강화학습이란 입력과 출력 출력에 대한 평가점수를 주어서 상호작용의 최적화을 위한 학습

8. 분류(classification)와 회귀(regression)
   분류는 입력 데이터를 보고 어느 한 범주에 속하는지 보는 모델
   예를 들면 자동차와 비행기가 입력 데이터로 주어졌을 때 자동차와비행기를 분류해서 결과값으로 출력하는 모델
   회귀란 유적학적으로 개개인의 정보가 부모의 유전종보로 수렴하는 경향이 있다는 뜻으로 정답이 분류와 다르게 값으로 나온다.
   예를 들면 사람 사진으로 보고 몸무게가 얼마인지 추론 하는 모델

9. 군집화(clustering)
   비지도학습에서 나오는 개념으로 데이터의 특성을 분석해서 관련 있는 데이터들 끼리 묵는 것을 말한다.



참고:
딥러닝첫걸음 - 머신러닝에서 컨벌루션 신경망까지 / 김성필 | 한빛미디어