
개요
인공지능의 가장 기본적인 개념 중 하나인 인공신경망을 설명한 글입니다. 관련 개인 프로젝트를 한지 몇 년이 되었는데, 개념 조차 모른 채 프로젝트를 해왔습니다. 참으로 부끄러운 일입니다.
최대한 수식을 넣지 않고 서술하였습니다.
구성
인공신경망을 구성하는 요소입니다.
노드 (Node)
신경망을 구성하는 가장 작은 단위입니다. 0.12 는 각 노드가 가지고 있는 값 (== Activation) 입니다.

다른 노드로부터 입력 신호 (0.90, 0.81, 0.28) 을 받아 어떠한 계산을 통해 출력한 값 0.12을 가지는 노드가 있다고 가정합시다. 이 연결 집합이 뉴런 (Neuron)입니다.

가중치 (Weight)
위 도식에서 Weight0, Weight1 .. 으로 출력 값을 계산할 때 사용하는 값입니다. 학습을 하는 동안 가중치는 계속 바뀝니다.
신경망 초기화(Initialization) 시, 가중치는 "일반적"으로 랜덤 구성됩니다. 모든 가중치가 0 또는 동일한 값으로 초기화되면 학습에 문제가 발생합니다.
레이어 (Layer)
뉴런을 동일 계층에 여러개 둔 것을 레이어라고 부릅니다.

레이어를 겹겹이 쌓은 것이 인공신경망 입니다. 인공신경망에서 레이어는 크게 3개의 종류로 구분합니다.
- 입력 레이어 (Input Layer) : 데이터(raw data) 를 최초로 받는 레이어
- 은닉 레이어 (Hidden layer) : 입력 레이어와 출력 레이어 사이의 레이어들
- 출력 레이어 (Output Layer) : 최종 출력 값을 가지는 레이어

코드 예 : (노드 3개를 가진 Input Layer 1개, 노드 12개를 가진 Hidden layer 2개, 노드 2개를 가진 Output Layer 1개)
model = Sequential()
model.add(Dense(12, input_dim=3))
model.add(ReLU(alpha=0.01))
model.add(Dense(12))
model.add(ReLU(alpha=0.01))
model.add(Dense(2, activation='linear'))
model.compile(loss='mse', optimizer=Adam(learning_rate=self.learning_rate))
함수
노드 간 상호작용을 위해 사용하는 함수들입니다.
활성화 함수 (Activation function)
각 뉴런에서 출력 값을 계산하는 함수입니다. 활성화 함수는 1) 일정한 범위 안에서의 출력 값 분포를 만들고 2) 다양한 패턴이 만들어지도록 도와줍니다. 1번과 2번은 엄연히 다른 말입니다.

다양한 활성화 함수들이 있습니다.
- Sigmoid
- ReLU
- Softmax ...
좀 더 찾아 보시면, 활성화 함수 뿐만 아닌 다양한 연산을 통해 출력 값을 계산하게 됩니다. 이 글에서 자세한 설명은 하지 않겠습니다.
코드 예 : (활성화 함수로 ReLU 선택)
model.add(Dense(12))
model.add(ReLU(alpha=0.01))
손실 함수 (loss function)
신경망의 성능을 측정하는 함수입니다.
다양한 손실 함수들이 있습니다.
- MSE (Mean Square Error)
- 힌지 손실
- 후버 손실 ...
코드 예 : (손실 함수로 MSE를 선택)
model.compile(loss='mse', optimizer=Adam(learning_rate=self.learning_rate))
최적화 함수 (Optimizer)
손실 함수를 근거로 신경망을 학습시키는 알고리즘입니다. 최적화 함수는 손실 값이 적도록 가중치를 계속 업데이트합니다. 신경망의 핵심입니다.
다양한 최적화 함수가 있습니다.
- 경사하강법
- 역전파
- Adam ...
코드 예 : (최적화 함수로 Adam을 선택)
model.compile(loss='mse', optimizer=Adam(learning_rate=self.learning_rate))
참고 자료
- https://89douner.tistory.com/22
- https://wikidocs.net/250625
- https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/init_ops.py
- http://matrix.skku.ac.kr/math4ai-intro/W13/
- https://wikidocs.net/277027
'컴퓨터공학 & 정보통신' 카테고리의 다른 글
| [인공지능] Swish 활성화 함수 이해하기 (0) | 2026.01.11 |
|---|---|
| [인공지능] 경사하강법 (Gradient Descent) 이해하기 (0) | 2025.10.15 |
| [알고리즘] 에라토스테네스의 체 (0) | 2024.09.28 |
| [알고리즘] 최소 신장 트리 MST (Minimum Spanning Tree) (1) | 2024.09.24 |
| [알고리즘] 비잔틴 장애 허용 (Byzantine Fault Tolerance) (1) | 2024.08.23 |