본문 바로가기

카테고리 없음

[CS231n] Lecture 4: Introduction to Neural Networks

computational graph는 머신 러닝에서 일반적으로 사용되는 방법으로, 복잡한 함수를 그래프 형태로 표현하는 데 사용된다. Computational graph를 사용하면 어떤 함수든지 그래프 형태로 표현할 수 있으며, 이 그래프의 각 노드는 연산 단계를 나타낸다.

제시된 예제에서는 입력 변수로 x와 W를 가지는 선형 분류기를 설명한다. 곱셈 노드는 행렬 곱셈을 나타내며, 파라미터 W와 데이터 x의 곱셈은 점수 벡터(score vector)를 출력한다.

Computational graph를 사용하면 backpropagation이라는 기술을 사용할 수 있다. Backpropagation은 gradient를 얻기 위해 computational graph 내의 모든 변수에 대해 chain rule을 재귀적으로 적용하는 과정이다.

 

위에 있는 것은 선형 변환식이고 다른 하나는 2층짜리 신경망의 레이어이다.
2층짜리 신경망은 먼저 W1과 x의 행렬 곱을 얻고 가진 max(0, W)의 비선형 함수를 이용해 최종적으로 score 함수를 얻을 수 있다.

광범위하게 말하면 신경망은 함수들의 집합(class)이다. 비선형의 복잡한 함수를 만들기 위해서 간단한 함수들을 계층적으로 여러개 쌓아올린 것이다.

예를 들어 그림에서 자동차 템플릿은 빨간 차처럼 보이지만, 실제 세계에서는 다른 여러 종류의 차가 존재한다.
위에서는 자동차 템플릿이 한 개밖에 존재하지 않아 다양한 자동차들을 분류할 수 없지만, 다중 레이어 네트워크는 그것을 가능하게 한다.

중간 변수 h와 W1은 이러한 종류의 템플릿이다.
하지만 하지만 h에서 이 템플릿들에 대한 모든 점수를 가지고 있기 때문에 우리는 이것을 결합하는 또 다른 레이어를 가질 수 도 있다. 즉, 우리는 더 많은 비선형 행렬을 사용하고 레이어를 쌓아 임의의 깊은 신경망을 구성할 수 있다.
.

 

신경망의 개념은 생물학적 뉴런의 동작에서 영감을 받았지만, 실제 뉴런의 동작과는 다릅니다. 신경망의 각 노드는 생물학적 뉴런의 수상돌기, 세포체, 축삭 등을 단순화하여 모델링한 것입니다. 실제 뉴런은 더 복잡한 비선형 계산을 수행할 수 있습니다.

 

우리는 서로 연결된 많은 뉴런을 가지고 있으며 각 뉴런을 따라 신호가 전달된다. 뉴런은 신호를 받는 수상돌기와 들어온 신호를 종합하는 세포체(cell body)를 가지고 있다.
세포체를 통해 합쳐진 모든 신호는 축삭(axon)을 통해 하류 뉴런과 연결된 다른 세포체로 운반된다.

이런 것들을 보았을 때 computational node는 실제 뉴런 동작과 비슷하다고 볼 수 있다.
노드가 computational graph에서 서로 연결되어 있고 입력 또는 신호는 x이다.

뉴런에 들어가는 것처럼 x0, x1, x2는 가중치 W와 결합되어 합쳐져 계산된다.

sigmoid 및 여러 종류의 비선형성으로 뉴런의 firing이나 spiking에 대해서 표현할 수 있다.
뉴런은 이산 spike 종류를 사용해서 신호를 전송하며 그것들이 매우 빠르게 spiking 하는 경우 전달되는 강한 신호가 있습니다.