관리 메뉴

ComputerVision Jack

머신러닝 가이드 - Chapter 3 Neural Network 본문

DeepLearning/머신러닝 - Algorithm

머신러닝 가이드 - Chapter 3 Neural Network

JackYoon 2020. 3. 3. 00:18
반응형

1. 뇌와 뉴런

뉴런(Neuron)

1차원 처리 단위의 신경 세포

뇌의 유체에서 화학적 전달자 역할을 하거나 뉴런 내부의 전위를 높이거나 낮추는 역할을 한다.

막 전위치(membrane ptential)가 임계점에 이르면 뉴런은 활성화하게 되고, 축색돌기(axon)로 

고정된 강도와 기간의 신호(pulse)를 보낸다.

축색돌기는 다른 뉴런들과 연결되어 있으며 시냅스(synapse)를 통해 다른 뉴런과 연결된다.

 

불응기(regractory period)

뉴런이 임계점을 넘어 신호를 보내고, 작동 전에 에너지 충전을 위해 기다리는 시기

 

가소성(plasticity)

뇌에서 학습이 일어나는지 살펴보는 방법

뉴런들을 연결하는 시냅스의 연결 강도를 조절하고, 새로운 연결을 만드는 뇌의 능력

 

헵의 법칙(Hebb's Rule)

시냅스의 연결 강도는 두 뉴런 간의 작용 연관성에 비례한다.

두 개의 뉴런이 계속해서 번갈아 가며 함께 작용한다면 두 개의 뉴런을 연결하는 강도는 더

강해지며, 반면 두 개의 뉴런이 전혀 함께 작용하지 않으면 두 개의 뉴런을 연결하는 부분도 약해진다.

 

장기 상승 작용(long-term ptentiation)과 신경 가소성(neural plasticity)

뉴런 간의 시냅스 연결과 합쳐진 뉴런들의 조합들이 함께 작용하면서 강하게되는 현상

 

맥컬룩과 피츠의 뉴런들

1943년에 소개된 산술적인 뉴런 모델

 

맥컬룩과 피츠의 뉴런 모델링

  • 가중치 값 : wi는 시냅스에 해당한다.
  • 가산기 : 입력된 신호들의 합으로 구해지며, 전하를 모으는 세포의 막과 동일시 된다.
  • 활성화(activation) 함수 : 뉴런의 활성화를 결정하는 함수

맥컬룩 피츠의 뉴런 수학 모델

각각의 뉴런의 활성화들은 시냅스를 통해서 뉴런에 전달되는데 각각의 시냅스는 

가중치(weight)라고 불리는 강도를 갖는다.

 

맥컬록과 피츠의 뉴런은 2진법의 임계 값을 갖는다.

입력 값의 합(입력 * 가중치)을 구하고 임계 값과 비교해서 활성화 시킬지를 결정한다.

활성화 함수(activation function)

g(x) - 1 if h > t(임계값)

     -  0 if h <= t(입계값)

 

멕컬룩과 피츠 뉴럴 모델의 한계점

실제의 뉴런의 입력 값들은 1차원 합의 형태가 아니며 비선형 합일 수도 있다.

실제 뉴런의 경우 하나의 값을 출력하지 않고, 정보를 인코드(encode)해서 파동의 연속적인 값인

스파이크 서열(spike train)을 출력한다.

 

가중치 wi는 양수 값 또는 음수 값을 갖고 뉴런을 더 활성화 하는 흥분성 연결(excitatiory)

덜 활성화 하는 억제성 연결(inhibitory connections)을 관장한다.

 

또한 실제 뉴런들은 다시 자기 자신에게 연결되는 피드백 루프(feedback loop)의 시냅스들을 가질 수 있는데

뉴럴 네트워크를 만들 때는 보통 이를 사용하지 않는다.

2. 뉴럴 네트워크(Neural Network)

뉴런에 뉴런들을 네트워크로 연결하고, 학습의 주체로 만들지를 생각해봐야한다.

뉴럴 네트워크의 궁극적 목표는 일반화 개념이다.

 

패턴 인식(pattern recognition)

데이터에 어떤 패턴이 존재한다고 가정할 경우 뉴럴 네트워크가 몇몇 예제를 통해서 패턴을 찾아 학습하면

다른 데이터에 대해서도 정확하게 예측할 수 있다는 개념

 

뉴런의 구성 요소

  • 입력 값
  • 임계 값
  • 가중치

뉴런들의 가중치 값과 임계 값을 변경하여 네트워크가 더 자주 정답을 맞추도록 해야한다.

3.퍼셉트론

퍼셉트론

입력 값 집합과 이를 뉴런과 연결하는 가중치들로 이뤄진 맥컬록과 피츠의 뉴런들의 집합

퍼셉트론

페섭트론의 뉴런들은 독립적이다. 뉴런의 행동은 다른 뉴런에게 영향을 미치지 않으며,

독립적인 각자의 반응은 가중치들과 곱해진 값의 합으로 통합되며, 이 값과 임계값 비교를 통해서 활성화 결정

 

일반적으로 m개의 입력과 n개의 뉴런을 같는다.

뉴럴 네트워크를 구현 할 떄, 2차원 배열을 사용해서 가중치들을 저장한다.

 

출력 패턴을 목표값들과 비교하고, 입력 값에 대해서 어떤 뉴런이 정답을 도출했는지

오답을 도출했는지 찾는다. 그리고 각 뉴런에 대하여 가중치 값들을 조절한다.

 

가중치 수정 방법

△wik = -(yk - tk) * xi 로 수정한다. 여기서 △wik 값은 학습률(learning_rate)이라는 파라미터를 곱해서

구해진다. 보통 n으로 표기된다. 학습률은 네트워크의 학습 시간을 결정한다.

wij <- wij - n(yi - tj) * xi

네트워크의 가중치를 제대로 업데이트하기 위해서 모든 트레이닝 데이터는 많은 횟수를 반복해서 학습 이용된다.

 

학습률 n

  • 학습률 큰 경우 : 네트워크를 불안정하게 만들고, 학습이 멈추지 않게 된다.
  • 학습률 작은 경우 : 학습 완료의 시간이 오래 걸리지만 정확성이 올라간다.

바이어스 값 입력

입력값 0에 대해서는 뉴런의 활성화를 결정하기 힘들다

따라서 임계값을 변경하기 위해서는 추가적으로 작성되어야 할 또 다른 파라미터가 필요하다

임계값을 뉴런에 대해서 0이라고 설정했다고 하면, 뉴런에 추가의 입력노드를 고정의 가중치 값으로 추가한다.

 

바이어스(bias)

알고리즘을 업데이트 할 때 다른 가중치들과 함께 위의 예제를 포함하고, 뉴런이 활성화 비활성화됨에 따라 새로

추가된 입력값에 연결된 가중치도 함께 바뀐다. 이 입력 노드를 바이어스라고 한다.

 

퍼셉트론 알고리즘 학습

  • 트레이닝(training)
  • 리콜(recall)

리콜 단계는 트레이닝이 끝난 후에 사용되며, 더 많은 빈도로 사용될 부분

알고리즘의 계산 복잡도를 추정하면

모든 입력 값들을 뉴런들에 대해 반복적으로 적용하므로 O(mn). 트레이닝은 트레인 횟수를 T라고 했을 때,

T번 반복이 더해지므로 O(Tmn)이 된다.

 

구현

np.dot()함수

행렬의 곱 연산을 진행하는 함수

np.where()

논리 연산을 진행하는 함수

# 두함수로 퍼셉트론에 대해 간단한 함수를 만들 수 있다.

 

03_1_퍼셉트론_구현.ipynb
0.01MB

4.선형 분리성

퍼셉트론은 뉴런이 활성화 하는 곳과 비활성화 하는 곳을 나누는 2D에서는 직선을 찾고

3D에서는 면을 찾고, 더 높은 차원에서는 초평면을 찾는다.

이러한 경계를 결정경계(decision boundary) 또는 판별식(discriminant function)이라고 한다.

 

퍼셉트론은 이러한 예쩨에 대해 활성화와 비활성화를 나누는 직선을 찾는다.

이러한 직선이 존재하는 경우를 선형 분리(linearly separable) 경우라고 한다.

 

하지만 트레이닝에서 최대 마진(margin)을 찾는다는 보장을 할수 없다.(svm은 가능)

 

베타적 논리합 함수

xor문제의 경우 직선으로 분리할 수 없다.

따라서 이러한 경우 도메인 변환을 적용시켜야 한다. 2차원 대신 3차원으로 문제를 확장하여

분류해 내는 평면을 찾을 수 있다.

 

데이터 전처리

머신러닝 알고리즘을 적용할 때, 데이터의 전처리를 통해 모델의 정확성을 높일 수 있다.

 

입력 데이터 스케일링 방법

  • 각각의 데이터 차원별로 독립적으로 처리하고, 평균 0 에 단위 분산을 갖도록 만든다.(정규화)
  • 최대 1값 최소 -1값을 갖는 범위로 변경한다.

또한 카테고리 변수를 만들어(양자화) 추가하는 것도 좋다.

5.선형 회귀

분류 문제를 회귀 문제로 변형하여 풀수 있다.

  • 지시변수(indicator variable) 활용. 각각의 데이터가 어떤 클래스에 속하는지 표현한다.
  • 반복적인 회귀. 한번에 하나씩의 클래스에 적용.

고차원에서 평면이나 초평면을 정의할 때, 일반적인 해법은 각 데이터에서 선까지의 거리를

최소화 하는 것이다.

피타고라스를 통해 거리를 구하고 거리들의 합을 오차 함수로 정의하고 이를 최소화한다.

최소제곱법을 사용해서 제곱근을 제외하고, 제곱합 오류를 최소화해서 최솟값을 찾는다

반응형
Comments