티스토리 뷰

신경망 파이썬 코드를 짜는데, 기본적인 개념 이해조차 되어있지 않아서 코드를 짜는데 어려움을 겪었다.🥲

 

신경망

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

차례로 왼쪽부터 입력층(input layer), 은닉층(hidden layer), 출력층(output layer)

 

 활성화함수

: 입력 신호의 총합을 출력 신호로 변환하는 함수

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

활성화함수는 이 식에서 h(x)와 같은 것을 말한다.

위와 같은 활성화 함수는 임계값을 경계로 출력이 바뀐다. 이런 함수를 계단함수라고 한다. 이러한 계단함수에서 다른 함수로 바꾸는 것이 목표이다. 

 

1. 시그모이드 함수

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

퍼셉트론에서는 뉴런사이에 0 or 1값만 나타났다면, 신경망에서 연속적인 함수가 흐른다.

입력이 아무리 작거나 커도 출력은 0과 1사이라는 공통점이 있다. 또 둘은 모두 비선형 함수이다. 활성화함수에서 선형함수를 사용하면 안되는 이유는, 신경망의 층을 깊게하는 것을 무의미하게 만들기 때문이다. 

 

2. ReLU 함수

최근에는 ReLU함수를 많이 이용한다.

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

입력이 0이 넘으면 그 입력을 그대로 출력하는 함수이다.

 

행렬

두 행렬의 곱은 넘파이 함수 np.dot으로 계산된다.

np.dot은 1차원 배열이면 벡터를, 2차원 배열이면 행렬 곱을 계산한다.

 

행렬의 곱셈을 할 때 A의 열수와 B의 행수가 같아야한다. 이 값이 다르면 행렬의 곱을 계산할 수 없다.

 

출력층의 설계

소프트맥스 함수

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

식에서 n은 출력층의 뉴런수, y는 k번째의 출력임을 뜻한다.

def softmax(a):
	exp_a = np.exp(a)
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a
    
    return y

 

개선 코드

def softmax(a):
	c = np.max(a)
    exp_a = np_exp(a-c) # 오버플로 대책
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a
    
    return y

정규화 : 데이터를 특정범위로 변환하는 처리

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

배치 : 하나로 묶은 입력 데이터 > 큰 배열을 효율적으로 처리 

 

파이썬 실습 코드는 나중에 꼭 해보면서 이해해야겠다! 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함