밑바닥부터 시작하는 딥러닝(3)

이소은·2025년 5월 8일

ch3 신경망

3.1 퍼셉트론에서 신경망으로

신경망

편향은 가중치가 b이고 입력이 1인 뉴런으로 볼 수 있음

두 식을 합쳐 h(x)로 표현하고 h(x)함수를 거쳐 변환되어, 그 변환된 값이 y의 출력이 됨

활성화 함수(h(x)) : 입력 신호의 총합을 출력 신호로 변환하는 함수

가중치 신호를 조합한 결과가 a라는 노드, 활성화 함수 h()를 통과하여 y라는 노드로 변환되는 과정임

3.2 활성화 함수

계단 함수 : 활성화 함수는 임계값을 경계로 출력 바뀌는 함수
위에서 봤던 활성화 함수가 예시임

y.astype(np.int) => y를 int형으로 바꿈

시그모이드 함수

신경망에선 활성화 함수로 시그모이드 함수를 이용하여 신호를 변환함

계단 함수 예시

시그모이드 함수 예시

시그모이드 함수와 계단 함수는 둘다 비선형 함수
선형함수의 문제점 : 층을 아무리 깊게 해도 은닉층이 없는 네트워크로도 똑같은 기능을 할 수 있음

ReLU : 입력이 0을 넘으면 입력값을 그대로 출력, 0 이하이면 0을 출력함

3.3 다차원 배열의 계산

np.ndim(A) : A 넘파이 배열의 차원 수
A.shape() : 배열의 형태(튜플로 반환)
np.dot(A, B) : A와 B의 행렬 곱

X와 W의 대응하는 차원의 원소 수는 같아야 함

3.4 3층 신경망 구현하기


3.5 출력층 설계하기

일반적으로 회귀는 항등 함수, 분류는 소프트맥스 함수 사용함

항등 함수 : 입력을 그대로 출력함

소프트맥스 함수

소프트맥스 함수 구현 시 주의점 : 오버플로 문제(지수함수를 사용하기에 아주 큰 값끼리 나눗셈을 하면 결과값이 불안정해짐)

해결방안

소프트맥스 함수의 출력 총합은 1임

뉴런수 : 분류 문제에서는 분류하고 싶은 클래스 수로 설정하는 것이 일반적임

3.6 손글씨 숫자 인식

순전파 : 입력에서 출력 방향

손글씨 숫자 인식

load_mnist()함수로 MNIST데이터 불러옴

normalize : 정규화
flatten : 1차원 배열로 만듦(False일 때 1x28x28로 3차원)
ont_hot_label : 0과 1로 나타냄

입력층 784개, 출력층 10개의 뉴런으로 구성됨

init_network : 학습된 가중치 매개변수를 읽음

정확도 평가

전처리 : 신경망의 입력 데이터에 특정 변환을 가하는 것

배치 : 하나로 묶은 입력 데이터

배치 처리 구현


0개의 댓글