일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터베이스
- 정보처리기사실기
- html/css
- C++
- 중학수학
- JSP/Servlet
- 데이터입출력구현
- 중학1-1
- 컴퓨터비전
- 자바
- 머신러닝
- 자바 실습
- 운영체제
- 파이썬라이브러리
- 컴퓨터구조
- 데이터분석
- SQL
- CNN
- pandas
- 연습문제
- 딥러닝
- 파이썬
- 혼공머신
- numpy/pandas
- 텍스트마이닝
- CSS
- 영어공부
- 정보처리기사필기
- 코딩테스트
- 정수와유리수
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
딥러닝 비전 4 - 깊은 다층 퍼셉트론 본문
딥러닝 관련 이론 내용은 조금 지루하지만 그래도 공부를 이어가 보겠다. 앞 절에서 특징 벡터의 차원이 2이고 데이터셋 크기가 4인 단순한 OR 데이터셋으로 퍼셉트론의 분류 능력을 예시했는데, 퍼셉트론은 수백 차원 샘플이 수만 개인 분류 문제도 풀 수 있다고 증명도이어 있다. 그런데 퍼셉트론은 선형 분류기이기 때문에 그림 7-12a와 같이 선형 분리 가능한 데이터셋만 100% 정확률로 분류할 수 있는 결정적인 한계가 있다. 퍼셉트론은 그림 7-12b와 같은 선형 분리 불가능한 상황에서는 정확률이 낮을 수밖에 없다.
민스키와 페퍼트는 『Perceptrons』라는 저서를 통해 퍼셉트론의 한계를 체계적으로 지적했다. 그림 7-13a에 있는 XOR 문제를 제시하고 퍼셉트론은 이런 단순한 문제조차 풀지 못한다고 비판했다. XOR 데이터셋은 퍼셉트론의 가중치를 어떻게 설정하든 4개 샘플 중 하나는 틀릴 수밖에 없어 정확률의 상한이 75%였다.
1986년에 루멜하트는 은닉층을 추가한 다층 퍼셉트론을 제시했다. 다층 퍼셉트론은 비선형 분류기로서 그림 7-12B의 데이터셋에서 곡선으로 구성된 결정 경계를 만들어 비선형 분류 문제를 멋지게 해결한다.
1. 다층 퍼셉트론
다층 퍼셉트론이 그림 7-13A의 XOR 분류 문제를 푸는 아이디어는 단순하다. 아이디어의 핵심은 퍼셉트론을 여러 개 사용하는 것이다.
발상
구조
그림 7-15B의 구조를 일반화하면 그림 7-16의 다층 퍼셉트론이 된다. 입력층과 출력층 사이에 새로 생긴 층을 은닉층이라고 한다. 두 층 사이에 숨어있다는 뜻에서 그런 이름이 붙었다. 은닉층이 형성하는 새로운 특징 공간을 은닉 공간 또는 잠복 공간이라 부른다. 입력층은 특징을 통과시키는 일만 하고 연산을 하지 않기 때문에 층을 셀 때 뺀다.
따라서 그림 7-16의 다층 퍼셉트론은 층이 2개고 그림 7-10A의 퍼셉트론은 층이 1개다. 다층 퍼셉트론은 이웃한 두 층에 있는 노드의 모든 쌍에 에지가 있어 완전 연결 구조라 부른다.
은닉층의 노드 개수 P는 사용자가 지정해야 한다. 이처럼 신경망의 구조 또는 다음에 공부할 학습 알고리즘과 관련하여 사용자가 설정해줘야 하는 매개변수를 하이퍼 매개변수라고 한다. 하이퍼 매개변수를 잘 설정해야 신경망이 높은 성능을 발휘하기 때문에 최적값을 찾는 일이 중요하다.
전방 계산
특징 벡터 X가 입력층으로 들어가 은닉층과 출력층을 거치면서 순차적으로 연산을 수행하는 과정을 전방 계산이라고 한다.은닉층과 출력층 순으로 전방 계산을 살펴본다.
파이썬으로 신경망을 프로그래밍할 때 식 (7.12) ~ (7.14)와 같은 행렬 표기를 주로 사용하므로 이들 표기에 익숙해져야 한다.
2. 딥러닝의 서막 : 깊은 다층 퍼셉트론
다층 퍼셉트론을 주로 사용하던 1980년대에도 은닉층을 더 많이 쌓아 신경망을 깊게 만드는 생각을 했다. 하지만 데이터셋이 작고 컴퓨터가 느리고 학습 알고리즘이 미숙한 탓에 깊은 다층 퍼셉트론 학습이 제대로 되지 않았다. 당시에는 은닉층을 1개 또는 2개 쌓은 얕은 신경망을 사용했다. 기술이 발전한 지금은 깊은 신경망을 문제없이 학습한다.
깊은 다층 퍼셉트론의 전방 계산
신경망 출력을 부류 정보로 해석
3. 활성 함수
퍼셉트론은 활성 함수로 그림 7-10b의 계단 함수를 사용하므로 출력이 1 또는 -1이다. 세상에는 두 가지 상태로 표현할 수 없는 경우가 아주 많다. 다층 퍼셉트론은 계단 함수를 닦았지만 매끄럽게 변하는 시그모이드 함수를 활성 함수로 사용한다. 시그모이드에는 범위가 [0, 1]인 logistic sigmoid와 범위가 [-1, 1]인 hyperbolic tangent sigmoid가 있다. 다층 퍼셉트론이 퍼셉트론의 한계를 극복한 원동력은 은닉층을 추가한 혁신적인 아이디어에 있었지만 활성 함수를 계단에서 시그모이드로 바꾼 데에도 있었다.
S 모양의 logistic sigmoid와 hyperbolic tangent는 0 근방에서 급격하게 변하지만 0에서 멀어지면 변화량이 아주 작다. 다시 말해 0에서 먼 곳의 미분값은 0에 가깝다. 신경망 학습은 출력층에서 입력층으로 진행하면서 미분값을 이용해 가중치를 갱신하는 방식으로 진행한다. 이때 미분값을 계속 곱하는데 활성 함수의 미분값이 작은 경우 급격하게 0에 가까워져 가중치 갱신이 일어나지 않는 현상이 발생한다.
이런 이유로 학습이 제대로 이루어지지 않는 증상을 그레이디언트 소멸이라 부른다. ReLU는 양수 구간이면 어느 곳에서마 미분값이 1이기 때문에 그레이디언트 소멸을 크게 누그러뜨린다. 이런 이유로 층이 깊은 딥러닝은 주로 ReLU를 사용한다.
학습을 마치고
이번 단원은 솔직히 많이 어려웠다. 다중 퍼셉트론 연산은 무슨 말인지 하나도 모르겠고 문서로는 쓸 수 없는 수식 기호가 많아 그런 내용은 모두 스캔해서 붙여 넣었다. 아무튼 이런 어려운 내용이 많아 3장쯤 공부하고 있을 때 과연 컴퓨터 비전을 지금 내가 공부할 수 있을지 고민이 많이 되었다. 하지만 모르는 부분이 있어도 그냥 적당히 넘어가고 지금은 나만의 학습법을 찾았다.
이제 학습 알고리즘에 대해서도 학습해보겠다.
'인공지능 > 컴퓨터 비전' 카테고리의 다른 글
딥러닝 비전 6 - 다층 퍼셉트론 구현하기 1 : 필기 숫자 인식과 성능 시각화 (0) | 2024.11.13 |
---|---|
딥러닝 비전 5 - 학습 알고리즘 (0) | 2024.11.13 |
딥러닝 비전 3 - 인공 신경망의 태동 (0) | 2024.11.13 |
딥러닝 비전 2 - 딥러닝 소프트웨어 맛보기 (1) | 2024.11.12 |
딥러닝 비전 1 - 방법론의 대전환과 기계학습 기초 (0) | 2024.11.12 |