레이어 Layers
신경망은 일반적으로 뉴런을 레이어로 조직화합니다. 동일한 입력을 가진 선형 유닛들을 모으면 밀집층(dense layer)이 됩니다.
신경망의 각 레이어는 상대적으로 간단한 변환을 수행한다고 생각할 수 있습니다. 여러 레이어가 쌓이면서 신경망은 입력을 점점 더 복잡한 방식으로 변환할 수 있습니다. 잘 훈련된 신경망에서는 각 레이어가 점점 더 정답에 가까워지도록 변환을 수행합니다.
활성화 함수 Activation Function
그러나, 두 개의 밀집층을 중간에 아무것도 없이 연결하면 하나의 밀집층과 크게 다르지 않습니다.
→ 여러 선형 변환을 거쳐도 여전히 선형이기 때문입니다.
밀집층만으로는 단순한 선과 평면의 세계를 벗어날 수 없습니다. 우리는 비선형적인 무언가가 필요합니다. 바로 활성화 함수입니다.
활성화 함수는 단순히 레이어의 출력(활성화)에 적용하는 함수입니다. 가장 유명한 함수 중 하나는 정류 함수(rectifier function)입니다.
정류 함수의 그래프는 음수 부분이 0으로 "정류"된 직선입니다. 이 함수를 뉴런의 출력에 적용하면 데이터에 곡률이 생겨 단순한 선에서 벗어날 수 있습니다.
정류 함수를 선형 유닛에 연결하면 정류 선형 유닛(ReLU)이 됩니다. 그래서 정류 함수를 "ReLU 함수"라고도 합니다. 선형 유닛에 ReLU 활성화를 적용하면 출력이 max(0, w * x + b)
가 되며, 이를 다이어그램으로 표현할 수 있습니다:
밀집층 쌓기 Dense Layers
출력 레이어 전에 있는 레이어들은 은닉층(hidden layers)이라 부르기도 합니다. 왜냐하면 이들의 출력을 직접 볼 수 없기 때문입니다.
마지막 출력 레이어가 선형 유닛(활성화 함수가 없는 상태)이면, 이는 회귀 문제에 적합합니다. 회귀 문제에서는 임의의 수치 값을 예측하려고 합니다. 다른 작업(예: 분류)에는 출력에 활성화 함수가 필요할 수 있습니다.
시퀀셜 모델 구축 (Keras)
우리가 사용한 Sequential
모델은 레이어들을 처음부터 마지막까지 순서대로 연결합니다. 첫 번째 레이어가 입력을 받고, 마지막 레이어가 출력을 생성합니다. 이 모델은 위 그림과 같은 모델을 만듭니다:
from tensorflow import keras
from tensorflow.keras import layers
model = keras.Sequential([
# 은닉 ReLU 레이어들
layers.Dense(units=4, activation='relu', input_shape=[2]),
layers.Dense(units=3, activation='relu'),
# 선형 출력 레이어
layers.Dense(units=1),
])
모든 레이어를 layer, layer, layer, ...
와 같은 리스트로 전달해야 합니다. 각 레이어에 활성화 함수를 추가하려면 activation
인수에 함수 이름을 지정하면 됩니다.
'컴퓨터공학 > 인공지능' 카테고리의 다른 글
오버피팅 과적합과 언더핏팅 (91) | 2024.08.01 |
---|---|
Stochastic Gradient Descent 경사하강법 (83) | 2024.07.31 |
딥러닝과 뉴런, 파이썬 케라스 코드 (83) | 2024.07.29 |
파이선 pandas 라이브러리 get_dummies() (64) | 2024.05.28 |
Naive Bayes model, 네이브 베이즈 모델 (75) | 2024.05.27 |