T'SPACE

다채로운 에디터들의 이야기

컴퓨터공학/인공지능

딥뉴럴 네트워크 Deep Neural Networks

Tonny Kang 2024. 7. 30. 10:08
반응형

레이어 Layers


신경망은 일반적으로 뉴런을 레이어로 조직화합니다. 동일한 입력을 가진 선형 유닛들을 모으면 밀집층(dense layer)이 됩니다.

신경망의 각 레이어는 상대적으로 간단한 변환을 수행한다고 생각할 수 있습니다. 여러 레이어가 쌓이면서 신경망은 입력을 점점 더 복잡한 방식으로 변환할 수 있습니다. 잘 훈련된 신경망에서는 각 레이어가 점점 더 정답에 가까워지도록 변환을 수행합니다.

728x90

활성화 함수 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 인수에 함수 이름을 지정하면 됩니다.

반응형