Semiconductor, Embedded/0. AI

ANN(Artificial Neural Network)에 대하여

잇(IT) 2024. 8. 3. 19:31

■ ANN(Artificial Neural Network)

 

ANN은 생물학적 신경망을 본떠 만든 컴퓨팅 시스템으로, 데이터 처리와 패턴 인식에 사용된다. ANN은 뉴런으로 불리는 노드의 집합으로 구성되며, 뉴런은 층(layer)로 조직되어 있다.

 

인공 신경망은 여러 층의 노드(뉴런)로 구성된 네트워크다. 각 노드는 입력값을 받아서 특정 함수에 따라 출력을 생성하고, 이 출력값을 다음 층으로 전달한다.


 

■ 구성 요소

 

1. 뉴런(노드) : 신경망의 기본 단위, 입력값을 받아 처리한다.

2. 입력층 : 데이터가 네트워크에 들어오는 층이다. 입력층의 뉴런은 데이터의 각 특징을 나타낸다.

3. 은닉층(hidden layer) : 입력층과 출력층 사이에 위치하며, 데이터의 복잡한 패턴을 학습한다.

4. 출력층 : 네트워크의 최종 결과를 생성하는 층이다. 문제에 따라 분류, 회귀 등의 형태로 결과를 출력한다.


■ 활성화 함수

 

활성화 함수는 인공 신경망에서 뉴런의 출력을 결정하는 함수다. 활성화 함수는 네트워크의 비선형성을 추가하여 복잡한 패턴과 관계를 학습할 수 있게 해준다.

 

여러가지 활성화 함수가 있지만 자주 사용되는 활성화 함수 3가지를 소개하겠다.

1. ReLU

2. Sigmoid

3. Soft Max


1. ReLU (Rectified Linear Unit)

ReLU 함수의 특징은 입력값이 양수일 때는 그대로 출력하고, 음수일 때는 0을 출력한다. 

 

- 비선형 함수

ReLU는 비선형성을 가진다. 비선형성은 네트워크가 더 복잡한 데이터 패턴을 학습할 수 있도록 도와준다.

음수 데이터에 대해서 0의 기울기를 가지기 때문에 단순히 입력값이 양수인지 음수인지만 확인하면 네트워크의 학습을 빠르게 진행할 수 있다.

 

* 활성화 함수는 크게 1. 선형 2. 비선형 함수가 있다.

1. 선형 활성화 함수는 입력값을 그대로 출력하는 함수이므로 간단한 계산이나 특정한 상황에 유용할 수 있다.

2. 비선형 활성화 함수는 신경망에 비선형성을 추가하여 복잡한 패턴을 학습할때 유용하다.


2. Sigmoid

Sigmoid 함수는 입력값을 0과 1 사이의 출력값으로 변환한다.

이진 분류 문제에서 확률 값을 출력하는 데 적합하다. 확률을 모델링할 때 유용하다.

ReLU와 마찬가지로 비선형이다.

 

- 단점

입력값이 매우 크거나 작을 때 Sigmoid 함수의 기울기가 거의 0에 가까워지며, 이는 '기울기 소실' 문제를 초래할 수 있다. 이 문제는 추후에 나오는 역전파 과정에서 가중치 업데이트가 느려지거나 어려워질 수 있다.


3. Soft Max

 

Soft Max 함수는 입력 벡터의 각 요소를 확률 값으로 변환하여, 총합이 1이 되도록 만든다.

신경망의 출력층에서 다중 클래스 분류 문제를 해결하는데 유용하다.

(벡터의 각 요소를 확률 값으로 변환하여, 총합이 1이 되도록 만든다는 것은 최종 출력으로 A, B, C라는 결과물이 있을 때 학습에 의해 데이터 일치 확률이 A = 70%, B = 40%, C = 30%의 결과가 나오게 되면 훈련 데이터 대한 출력값들간의 비율을 직관적으로 이해하기 힘들기 때문에 이를 A = 60%, B = 25%, C = 15%와 같이 합이 1이 되도록한다.)

 

즉, 각 클래스에 대한 상대적인 비율을 표현하고 최종 예측을 위해 가장 높은 확률을 가진 클래스를 선택하는 데 도움을 준다.


■ 경사 하강법

 

경사 하강법은 훈련을 통해 나온 결과물과 실제 결과물의 오차를 최소화하기 위해 사용된다.

즉, 손실 함수를 최소화하기 위한 알고리즘이다.

 

1. 매개변수(가중치와 편향)를 초기화 한다. 일반적으로 작은 무작위 값으로 설정된다.

2. 손실 함수의 기울기를 계산한다. 이 기울기는 매개변수가 얼마나 빠르게 변화하는지를 나타낸다.

3. 기울기의 반대 방향으로 매개변수를 업데이트 한다. (위 그림에서 왼쪽 빨간 점은 우하향이기 x값이 커지는 방향으로 업데이트 한다. 만약 오른쪽 빨간 점은 좌하향이기 때문에 x값이 작아지는 방향으로 업데이트 한다.)

 

경사 하강법은 위 그림과 같이 Global miniumn 지점을 찾아야하지만 Local minima 지점에서 빠져나오지 못하는 한계가 있기 때문에 이를 해결하기 위해 확률 경사 하강법을 사용한다.


■ ANN 예시

1. 순전파

입력값이 입력층에서 시작하여 은닉층을 거쳐 출력층으로 전달된다.

(위에서 Temperature, Pressure, Humidity, Vaccum 입력 값들이 중간의 파란선들의 가중치와 합쳐져 중간의 초록색 부분에 결과로 전달된다. 해당 결과는 두번째 가중치와 더해져 두번째 초록색 부분에 전달된다. 최종적으로 계산된 결과는 하나(여러개일 수 있음)의 결과로 출력된다.

(위 과정에서 ReLU, Simoid 함수들이 사용된다.)

 

2. 손실 계산

출력값과 실제 정답값 간의 차이를 계산하여 손실 함수를 통해 손실값을 구한다.

(예를들어 임의로 최초에 설정되어 첫번째 초록색 라인의 제일 위 동그라미가 Temperature, Pressure, Vaccum 입력에 가중치가 상대적으로 크게 잡히게 된다면 그에 맞게 출력까지 계산되어 손실 함수의 값을 구하게 된다.)

 

3. 역전파

역전파 알고리즘을 통해 모든 가중치에 대한 값을 조정할 수 있다. 역전파를 통해 가중치를 조정할 수 있는 이유는 역전파 알고리즘의 구조 방식 때문이다.

 

가중치들은 무작위로 0과 비슷하지만 0은 아닌 작은 수로 설정된다. 순전파와 역전파를 거치면서 이 가중치들은 오차가 최소화될 때까지 조정된다.(손실 함수가 최소가 될 때까지)


■ 알아두면 좋은 용어

 

- 에포크(epoch)

하나의 에포크는 신경망이 훈련 데이터 전체를 한 번 모두 사용하여 학습하는 과정을 의미한다. 데이터 세트의 모든 샘플이 한 번씩 신경망을 통과하면 한 에포크가 완료된 것이다.

 

- 배치(batch)

에포크 동안 한 번에 처리할 데이터 샘플의 수를 의미한다. 예를 들어, 배치 크기가 32라면, 한 번의 훈련 단계에서 32개의 샘플이 처리된다.

 

- Dense

입력층과 출력층 사이의 모든 뉴런이 서로 연결되어 있는 구조를 의미한다.

 

728x90

'Semiconductor, Embedded > 0. AI' 카테고리의 다른 글

CNN(Convolution Neural Network)에 대하여  (0) 2024.08.05