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

Shin·2022년 2월 16일
0

Machine Learning

목록 보기
2/6

이 글은 사이토 고키의 밑바닥부터 시작하는 딥러닝을 요약하기 목적으로 작성되었다
코드 실습보단 부족한 이론적인 부분에 대해 위주로 요약했다
Chapter 1은 파이썬을 설치하기 위한 기본적인 부분이기 때문에 제외하였다


chapter 2 퍼셉트론

퍼셉트론이란?

다수의 신호를 입력으로 받아 하나의 신호를 출력, 1이나 0 두 가지 값을 가질 수 있다


x1과 x2는 입력 신호, y1, y2는 출력 신호, w1와 w2는 가중치를 뜻한다
입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해진다.
뉴런에서 보내온 신호의 총합이 정해진 한계를 넘으면 1을 출력
그 한계를 '임계값'이라 하며, Θ 기호를 사용

동작 원리를 식으로 나타내면 이런 형태를 가지며,
가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용

퍼셉트론 구현하기

퍼셉트론으로 AND, NAND, OR 논리 회로를 표현할 수 있다
퍼셉트론의 매개변수(가중치와 임계값) 값을 적절히 조정하여 세 가지 게이트를 표현한다


Θ를 -b로 치환하면 위에 식처럼 변환된다
여기서 b를 편향이라 한다
퍼셉트론은 입력 신호에 가중치를 곱한 값과 편향을 합하여, 그 값이 0을 넘으면 1, 그렇지 않으면 0을 출력

퍼셉트론의 한계

XOR은 배타적 논리합이라는 논리 회로로, 한 쪽이 1일 때만 1을 출력한다

퍼셉트론은 2차원 평면에서 직선 하나로 나눈 영역만 표현할 수 있다
그렇기 때문에 선형 영역이 아닌 곡선의 영역인 비선형 영역을 사용해야 나눌 수 있다

다층 퍼셉트론


AND, NAND, OR 게이트를 조합해 XOR 게이트를 구현했다

다음은 XOR 게이트의 퍼셉트론인데, 이처럼 층이 여러 개인 퍼셉트론을 다층 퍼셉트론이라 한다
0층에서 1층으로 신호가 전달되고, 이어서 1층에서 2층으로 신호가 전달된다


Chapter 3 신경망


다음은 신경망의 예다
가장 왼쪽 줄을 입력층, 맨 오른쪽 죽을 출력층, 중간 줄을 은닉층이라 한다

앞서 말한 식에서 b는 편향을 의미하며, 뉴런이 얼마나 쉽게 활성화되느냐를 제어한다
w1과 w2는 각 신호의 가중치를 나타내는 매개변수로, 각 신호의 영향력을 제어한다
위 그림은 퍼셉트론에 편향 b 노드를 추가로 명시했다

위 퍼셉트론은 x1, x2, 1이라는 3개의 신호가 뉴런에 입력되어, 각 신호에 가중치를 곱한 후 다음 뉴런에 전달한다
다음 뉴런에서는 이 신호들의 값을 더하여, 그 합이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력한다

위 h(x) 처럼 입력 신호의 총합을 출력 신호로 변환하는 함수를 일반적으로 활성화 함수라고 한다
가중치 신호를 조합한 결과가 a라는 노드가 되고, 활성화 함수 h()를 통과하여 y라는 노드로 변환된다

활성화 함수

위 h() 함수는 임계값을 경계로 출력이 바뀌는데, 이런 함수를 계단 함수라고 하며, 퍼셉트론이 채용한 활성화 함수다
신경망은 계단 함수 이외의 다양한 활성화 함수를 사용한다


다음은 신경망에서 자주 사용하는 시그모이드 함수의 식이다
시그모이드 함수는 계단 함수와 다르게 연속적인 출력값을 보내준다
ex) h(1.0) = 0.731..., h(2.0) = 0.880...

계단 함수와 시그모이드 함수의 공통점은 둘 다 비선형 함수이다.
신경망에서는 활성화 함수로 선형 함수를 사용하면 은닉층이 없는 네트워크로도 표현이 가능하기 때문에 신경망의 층을 깊게 하는 의미가 없어진다
ex) h(x) = cx를 활성화 함수로 사용한 3층 네트워크는 y(x) = c^3x가 되버린다


다음 식은 최근에 사용하는 ReLU(렐루) 함수다
ReLU는 입력이 0을 넘으면 그 입력을 그대로 출력하고, 0이하면 0을 출력한다

ReLU 함수의 그래프

다차원 배열의 계산

넘파이의 다차원 배열을 사용한 계산법을 이용하면 신경망을 효율적으로 구현할 수 있다

편향과 활성화 함수를 생략하고 가중치만 갖는 신경망의 계산이다
코드상 np.dot(x, w)을 통해 복잡한 계산을 쉽게 구현한다.

3층 신경망 구현하기

다음은 신경망의 처리를 설명할 때 사용하는 표기법이다
오른쪽 위에 (1)은 1층의 가중치, 1층의 뉴런임을 뜻하는 번호다
아래 두 숫자는 앞 층의 2번째 뉴런에서 다음 층의 1번째 뉴런으로 향한다는 의미를 가진다
편향을 뜻하는 b가 추가된 신경망이다
편향은 하나만 존재하기 때문에 오른쪽 아래 인덱스가 하나밖에 없다
다음은 3층 신경망의 모습이다
편향을 뜻하는 b가 추가되었는데, 편향은 하나만 존재하기 때문에 오른쪽 아래 인덱스가 하나밖에 없다
여기에선 활성화 함수로 시그모이드를 사용했다
마지막 출력층에선 활성화 함수로 항등 함수를 사용했다
항등 함수는 입력을 그대로 출력하는 함수다

출력층 설계하기

신경망은 일반적으로 회귀에는 항등 함수를, 분류에는 소프트맥스 함수를 사용한다
위 그림은 소프트맥수 함수의 식이다
분자는 입력 신호 a_k의 지수 함수, 분모는 모든 입력 신호의 지수 함수의 합으로 구성된다
그렇기 때문에 소프트맥스의 출력은 모든 입력 신호로부터 화살표를 받는다
소프트맥스 함수의 출력은 0에서 1.0 사이의 실수이며, 출력의 총합은 1이다
이 성질 덕분에 소프트맥스 함수의 출력을 '확률'로 해석할 수 있다
하지만 소프트맥스 함수를 적용해도 각 원소의 대소 관계는 변하지 않는다
그렇기 때문에 현업에서도 지수 함수 계산에 드는 자원 낭비를 줄이고자 출력층의 소프트맥스 함수를 생략하는 것이 일반적이다

0개의 댓글