본문 바로가기

전체 글

(71)
[밑바닥부터 시작하는 딥러닝 1] Ch 6. 학습 관련 기술들 이번 포스팅에서는 가중치 매개변수의 최적값을 탐색하는 최적화 방법, 가중치 매개변수 초깃값, 하이퍼파라미터 설정 방법 등 신경망 학습에서 중요한 기술들에 대해서 설명하고, 과적합의 대응책인 가중치 감소, Dropout, 배치 정규화 등의 정규화 방법에 대해서도 설명하도록 하겠다. 확률적 경사하강법(SGD) 기울어진 방향으로 일정 거리만큼 가겠다는 단순한 방법임 단점은 기울기가 달라지는 함수에서는 탐색 경로가 비효율적임 따라서 SGD는 단순하고 구현도 쉽지만, 문제에 따라서는 비효율적일 때가 있음 이러한 SGD의 단점을 개선해주는 방법으로는 "Momentum, AdaGrad, Adam"이 있음 Momentum 기본적으로 SGD와 유사하지만, "속도(v)"라는 개념이 추가됨 즉, 물체가 아무런 힘을 받지 않..
[밑바닥부터 시작하는 딥러닝 1] Ch 5. 오차역전파법 여태까지 우리는 단순하고 구현하기도 쉬운 "수치 미분"을 통해 가중치 매개변수에 대한 손실 함수의 기울기를 구했다. 그러나 "수치 미분"은 계산 시간이 오래 걸린다는 단점이 있으므로, 일반적으로는 "오차역전파법"을 사용한다. 그렇다면 수치 미분은 아무런 쓸모가 없는 것일까? 그렇지 않다. 수치 미분은 오차역전파법을 정확히 구현했는지 확인하기 위해 필요하다. (기울기 확인 = Gradient Check) (즉, 수치 미분의 결과와 오차역전파법의 결과를 비교하여 오차역전파법을 제대로 구현했는지 검증하는 용도로 사용) 이와 같은 작업이 필요한 이유는 "수치 미분"은 구현이 단순하고 쉬운 반면, "오차역전파법"은 구현하기 복잡해서 종종 실수를 할 수 있기 때문이다. 일반적으로 두 방법에 대한 결과의 오차가 0에..
[밑바닥부터 시작하는 딥러닝 1] Ch 4. 신경망 학습 이번 포스팅은 "신경망 학습"에 대한 내용을 다루도록 하겠다. 학습 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 의미함 신경망이 학습할 수 있도록 해주는 지표가 바로 "손실 함수"임 손실 함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표이며, 이 때 "경사하강법"이 사용됨 기계학습에서는 사람의 개입을 최소화하고, 수집한 데이터로부터 패턴을 찾으려 시도한다. 신경망과 딥러닝은 기존 기계학습에서 사용하던 방법보다 사람의 개입을 더욱 배제할 수 있게 해주는 중요한 특성을 지녔다. 이와 같은 이유로 딥러닝을 "End-to-End 기계학습"이라고도 한다. 기계학습 문제는 데이터를 학습 데이터(train data)와 테스트 데이터(test data)로 나눠서 학습과 ..
[밑바닥부터 시작하는 딥러닝 1] Ch 3. 신경망 이번 포스팅에서는 "신경망"에 대해서 다뤄보도록 하겠다. 앞 장에서 공부한 퍼셉트론은 매개변수(가중치와 편향) 조정을 사람이 수동으로 해주어야 한다는 단점이 있다. 이러한 단점을 해결해 줄 수 있는 것이 바로 신경망이다. 신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 있다!! 신경망을 그림으로 나타내면 다음과 같으며 크게 입력층, 은닉층, 출력층 이렇게 3개로 구분된다. 여기서 "활성화 함수"라는 개념이 등장한다. 활성화 함수란 입력 신호의 총합이 활성화를 일으키는지를 정하는 역할을 수행한다. (** 앞서 2장에서 본 퍼셉트론은 활성화 함수로 "계단 함수"를 사용한다) 신경망에서 자주 이용되는 활성화 함수 (모두 비선형) 시그모이드 함수 ReLU 함수 일반적으로 이용되는 출..
[밑바닥부터 시작하는 딥러닝 1] Ch 2. 퍼셉트론 이번 포스팅에서는 신경망의 기원이 되는 알고리즘인 "퍼셉트론"에 대한 내용을 다루도록 하겠다. 퍼셉트론 다수의 신호를 입력으로 받아서 하나의 신호를 출력함 뉴런에서 보낸 신호의 총합이 정해진 한계(임계값)를 넘어설 때만 1을 출력함(이 때 뉴런이 활성화된다고 함) AND 게이트 입력이 둘이고 출력은 하나인 논리 회로임 두 개의 입력이 모두 1일 때만 1을 출력함 NAND 게이트 Not AND를 의미함 즉, AND 게이트의 출력을 뒤집은 것임 마찬가지로 입력이 둘이고 출력은 하나인 논리 회로임 두 개의 입력이 모두 1인 경우에만 0을 출력하고, 나머지 경우는 모두 0을 출력함 OR 게이트 마찬가지로 입력이 둘이고 출력은 하나인 논리 회로임 입력 신호 중, 하나 이상이 1이면 출력이 1이 됨 여기서 중요한 ..
[밑바닥부터 시작하는 딥러닝 1] Ch 1. 헬로 파이썬 1장은 파이썬의 기초적인 내용들에 대한 설명이 주를 이룬다. 필자는 파이썬 기초에 대한 지식이 있는 상태에서 교재를 접했기 때문에, 1장은 그냥 가벼운 마음으로(?) 읽어넘겼다. 다만, 1장에서도 중요한 내용들이 있기에, 특별히 주의깊게 살펴봐야 할 부분들에 대해서 정리해보도록 하겠다. 클래스 개발자가 직접 클래스를 정의하면 독자적인 자료형을 만들 수 있음 또한 해당 클래스만의 전용 함수(메서드)와 속성을 정의할 수 도 있음 클래스 생성은 딥러닝 모델 생성 시에 필수적이므로, 개념을 잘 익혀두어야 함 클래스 정의에는 __init__이라는 특별한 메서드가 있으며, 클래스를 초기화하는 방법을 정의한다. 이 초기화용 메서드를 생성자라고 하며, 클래스의 인스턴스가 만들어질 때 한 번만 불린다. 또한 파이썬에서는..
[KoNLPy 설치] Window10에서 KoNLPy 설치하기 (feat. 이제 삽질은 그만!! ^^) 이번 포스팅에서는 많은 분들이 애를 먹고 있는 문제 중 하나인 KoNLPy 패키지 설치에 관해 정리해보려 한다. 필자 또한 책 또는 구글에 나온대로 해당 패키지를 설치했지만 한 번에 제대로 설치되지 않았다... 그러던 중, Inflearn의 권철민님 강의를 수강하며 KoNLPy를 쉽게(?) 설치하는 방법에 대해 알게되었고, 이를 포스팅한다면 미래의 나를 포함한 많은 분들에게 도움이 될 것이라고 생각되기에 이번 포스팅을 작성하게 되었다. 자, 그럼 설치 과정을 단계별로 설명하도록 하겠다. 가장 먼저 해야할 것은 jpype1 모듈을 설치하는 것이다. 설치 방법은 다음과 같다. 1. Anaconda Prompt (Window10은 관리자 권한으로) 실행 2. conda install -c conda-forge..
[핸즈온 머신러닝 2/E] 9장. 비지도 학습 드디어 "핸즈온 머신러닝 2/E" 교재를 Part 1(머신러닝 파트)까지 완독하였다!! 자, 그럼 이제 Part 1의 마지막 챕터인 "9장. 비지도 학습"에 대해서 정리해보도록 하겠다. ▶ 비지도 학습이란? 우리가 사용할 수 있는 대부분의 데이터는 레이블이 없다. 즉, 정답이 없는 데이터이기 때문에 지도 학습을 사용할 수가 없다. 이러한 경우에 사용하는 방법이 바로 "비지도 학습"이다. 대표적인 비지도 학습으로는 Clustering(군집 분석)이 있다. ▶ 군집 분석(Clustering) 앞서 말했듯이, 군집 분석은 대표적인 비지도 학습이다. 주의할 점은 "분류"와 "군집"을 헷갈리면 안 된다는 것이다. 아래의 그림을 참고하면, 분류와 군집을 구분할 수 있을 것이라고 생각한다. 군집 분석은 다방면에서 활..