Skip to content
This repository was archived by the owner on Oct 19, 2023. It is now read-only.

Commit dc050ab

Browse files
committed
update readme
1 parent ee6ceed commit dc050ab

File tree

12 files changed

+153
-195
lines changed
  • 01-딥러닝과_파이토치
  • 02-파이토치_시작하기
  • 03-파이토치로_구현하는_ANN
  • 04-패션_아이템을_구분하는_DNN
  • 05-이미지_처리능력이_탁월한_CNN
  • 06-사람의_지도_없이_학습하는_오토인코더
  • 07-순차적인_데이터를_처리하는_RNN
  • 08-딥러닝을_해킹하는_적대적_공격
  • 09-경쟁하며_학습하는_GAN
  • 10-주어진_환경과_상호작용하며_성장하는_DQN
  • test

12 files changed

+153
-195
lines changed
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# 딥러닝과 파이토치
22

3-
딥러닝의 기본 지식을 쌓고 파이토치의 장단점에 대해 알아봅니다.
3+
딥러닝의 기본 지식을 쌓고, 여러 기계학습 방식에 대해 배웁니다. 파이토치가 무엇이고, 왜 필요한지와, 텐서플로와 케라스 같은 라이브러리와 무엇이 다른지에 대해 알아봅니다.
44

5-
* [개념] 신경망의 원리
6-
* [개념] 딥러닝과 신경망
7-
* [개념] 왜 파이토치인가?
5+
* 인공지능과 머신러닝
6+
* 지도학습, 비지도학습, 그리고 강화학습
7+
* 딥러닝과 신경망
8+
* 파이토치가 개발되기까지
9+
* 왜 파이토치인가?
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
# 파이토치 시작하기
22

3-
파이토치 환경설정과 사용법을 익혀봅니다
3+
파이토치 환경 설정과 사용법을 익혀봅니다. 파이토치 외에도 책을 진행하면서 필요한 주변 도구를 설치합니다.
4+
5+
* 파이토치 설치 & 환경구성
6+
* 파이토치 예제 내려받고 실행 확인하기
7+
* 주피터 노트북
Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1-
# 파이토치로 구현하는 신경망
1+
# 파이토치로 구현하는 ANN
22

3-
파이토치를 이용하여 가장 기본적인 신경망을 만들어봅니다.
3+
파이토치를 이용하여 가장 기본적인 인공 신경망을 구현하고 모델을 저장, 재사용하는 방법까지 배웁니다.
4+
5+
* 텐서와 Autograd
6+
* [텐서의 차원 자유자재로 다루기](tensor_basic.ipynb)
7+
* [텐서를 이용한 연산과 행렬곱](tensor_operation.ipynb)
8+
* [Autograd](autograd_basic.ipynb)
9+
* [경사하강법으로 이미지 복원하기](image_recovery.ipynb)
10+
* 오염된 이미지 문제
11+
* 오염된 이미지를 복원하는 방법
12+
* 문제 해결과 코드 구현
13+
* [신경망 모델 구현하기](basic_neural_network.ipynb)
14+
* 인공 신경망(ANN)
15+
* 간단한 분류 모델 구현하기
Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1-
# 딥러닝으로 패션 아이템 구분하기
1+
# 패션 아이템을 구분하는 DNN
22

3-
Fashion MNIST 데이터셋과 앞서 배운 인공신경망을 이용하여 패션아이템을 구분해봅니다.
3+
앞서 배운 인공 신경망을 이용하여 Fashion MNIST 데이터셋 안의 패션 아이템을 구분해봅니다.
4+
5+
* [Fashion MNIST 데이터셋 알아보기](fashion_mnist.ipynb)
6+
* [인공 신경망으로 패션 아이템 분류하기](neural_network.ipynb)
7+
* 환경 설정하기
8+
* 이미지 분류 문제
9+
* 이미지 분류를 위한 인공 신경망 구현
10+
* 성능 측정하기
11+
* [과적합과 드롭아웃](overfitting_and_regularization.ipynb)
12+
* 데이터 늘리기
13+
* 드롭아웃
Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
1-
# 이미지 인식능력이 탁월한 CNN
1+
# 이미지 처리능력이 탁월한 CNN
2+
3+
영상 인식에 탁월한 성능을 자랑하는 CNN에 대하여 알아봅니다. 여기에 그치지 않고 CNN을 더 쌓아 올려 성능을 올린 ResNet에 대해 알아보고 구현합니다.
4+
5+
* CNN 기초
6+
* 컴퓨터가 보는 이미지
7+
* 컨볼루션
8+
* CNN 모델
9+
* [CNN 모델 구현하기](cnn.ipynb)
10+
* [ResNet으로 컬러 데이터셋에 적용하기](resnet.ipynb)
11+
* ResNet 소개
12+
* CIFAR-10 데이터셋
13+
* CNN을 깊게 쌓는 방법
214

315

416
*본 튜토리얼은 PyTorch의 공식 튜토리얼 (https://github.com/pytorch/examples/blob/master/mnist/main.py)을 참고하여 만들어졌습니다.*
Lines changed: 9 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,11 @@
1-
# 사람의 지도 없이 학습하는 Autoencoder
1+
# 사람의 지도 없이 학습하는 오토인코더
22

3-
레이블이 없는 상태서 특징추출을 하는 오토인코더에 대해 배워봅니다.
3+
정답이 없는 상태에서 특징을 추출하는 비지도학습에 대해 알아보고 대표적인 비지도학습 모델인 오토인코더를 이해하고 구현하는 방법을 익힙니다.
44

5-
* [개념] 오토인코더 기초
6-
* [프로젝트 1] 오토인코더로 이미지의 특징을 추출하기
7-
* [프로젝트 2] 오토인코더로 망가진 이미지 복원하기
8-
* 더 보기
9-
10-
## 오토인코더 기초
11-
12-
지금까지는 입력값에 정답이 포함된 지도학습을 위주로 공부했습니다.
13-
반대로 이 챕터에서는 입력값(X)만이 주어진채로 비지도학습을 하는 방법인
14-
오토인코더(Autoencoder)에 대해 알아보겠습니다.
15-
16-
이미지, 오디오, 텍스트 등 데이터 형태와 관계 없이 사람이 직접 정답을 알려주는 경우는
17-
사람이던 컴퓨터던 매우 효율적으로 학습할 수 있습니다.
18-
바로 입력과 출력의 관계만 설명할 수 있으면 되기 때문입니다.
19-
하지만 데이터셋에 정답이 포함되지 않은 경우엔 이야기가 달라집니다.
20-
외국어를 배울때 원어민이 옆에서 과외를 해줄때는 배울만 하지만,
21-
한 글자도 모르는 상태에서 외국어로 된 책을 통해 배우라고
22-
하는 것은 어려운것과 비슷한 느낌입니다.
23-
24-
그럼에도 불구하고 주어진 데이터만으로 패턴을 찾는 비지도학습은
25-
흥미로운 주제입니다. 세상에 존재하고 계속 만들어지고 있는 대부분의
26-
데이터는 정답이 없기 때문입니다.
27-
인공지능이 실생활과 서비스에서 진정한 확장성을 가지려면
28-
비지도학습과 준지도학습의 발전이 따라야 한다고 생각합니다.
29-
30-
지도학습은 단순히 말해 입력 x와 정답 y사이를 잇는 관계를 찾는 것 입니다.
31-
정답이 있으면 현재 예측값이 얼마나 틀렸는지도 명확하고
32-
오차를 측정할 수 있기 때문에 오류값(Loss)을 구하기도 쉽습니다.
33-
34-
지도학습의 이 아이디어를 빌려 x를 받아 x를 출력하도록 설계된
35-
신경망이 바로 오토인코더 입니다.
36-
단, 신경망은 범용근사자(Universal Function Approximator)로서
37-
근사치를 출력하기 때문에 입력된 x를 복원한다는 개념이 더 알맞습니다.
38-
그러므로 오류값도 x를 얼마나 복원했는지를 뜻하는
39-
복원오차, 혹은 정보손실값(Reconstruction Loss)이라는 용어를 사용합니다.
40-
41-
![autoencoder](./assets/autoencoder.png)
42-
43-
오토인코더의 또 다른 중요한 특징은 입력과 출력의 크기는 같지만
44-
중간으로 갈수록 신경망의 차원이 줄어든다는겁니다.
45-
이런 특이한 구조로 인하여 정보의 통로가 줄어들고
46-
병목현상이 일어나 입력의 특징들이 '압축'이 되도록 학습됩니다.
47-
작은차원에 고인 압축된 표현을 우리말로
48-
"잠재변수"(Latent Vector)라고하고,
49-
간단하게 줄여 `z`라고도 부릅니다.
50-
51-
또, Latent Vector의 앞뒤를 구분하여
52-
앞부분을 인코더(Encoder),
53-
뒷부분을 디코더(Decoder)라고 합니다.
54-
인코더는 정보를 받아 압축을 하고,
55-
디코더는 압축된 표현을 풀어 다시 입력을
56-
복원시키는 역할을 하여 붙여진 이름입니다.
57-
58-
실제로 훈련시켜 보면 오토인코더로 입력이 다시 복원이 되는것이 신기하긴
59-
하지만 단순히 입력을 복제하는 것이 핵심은 아닙니다.
60-
진짜로 흥미로운 부분은 압축된 데이터입니다.
61-
앞서 말했듯 신경망이 받은 이미지를 복원하도록 학습하고 나면
62-
중간층에 이미지의 정보를 낮은 차원에 저장하게 됩니다.
63-
낮은차원에 높은 밀도로 표현되는 데이터이므로 '의미의 압축'이 일어납니다.
64-
이것은 흔히 우리가 알고있는 `zip`압축 같은 것이 아닙니다.
65-
단순히 데이터의 크기를 줄이고 싶을 경우
66-
기존 압축 알고리즘을 사용하는것이 빠르고 안전하나,
67-
오토인코더는 복잡한 데이터의 의미를 담을 수 있다는 점에서 특별합니다.
68-
69-
정보의 압축이 가능하단 것은 결국
70-
정보의 구성에 우선순위가 존재한다는 뜻입니다.
71-
그리고 압축이란 정보에서 덜 중요한 요소를
72-
버리는 과정이라고 정의할 수 있습니다.
73-
그러므로 오토인코더에서는 필연적으로 정보의 손실이 일어나게 됩니다.
74-
이것은 정보의 디테일을 잃어버린다는 뜻이 될 수 있으나,
75-
오히려 중요하지 않은 정보를 떼어내고 중요한 정보만 남겨두는
76-
일종의 데이터 가공이라고 볼 수도 있습니다.
77-
78-
이런 특징으로 인해 오토인코더는 주로 복잡한 비선형 데이터의
79-
차원을 줄이는 용도로 쓰이나 산업에서 비정상 거래 검출,
80-
데이터 시각화와 복원, 의미 추출, 이미지 검색등에도 쓰이고 있습니다.
81-
그리고 여러가지의 파생 모델들이
82-
기계번역, 생성모델 등 여러가지 응용 분야들의 기초가 되고 있습니다.
5+
* 오토인코더 기초
6+
* [오토인코더로 이미지의 특징 추출하기](basic_autoencoder.ipynb)
7+
* 오토인코더 구현
8+
* 잠재 변수 들여다보기
9+
* [오토인코더로 망가진 이미지 복원하기](denoising_autoencoder.ipynb)
10+
* 잡음 제거 오토인코더 구현
11+
* 잡음 제거 시각화하기
Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
# 순차적인 데이터를 처리하는 RNN
22

3-
RNN을 활용하여 영화 리뷰 감정 분석과 기계번역을 해봅니다.
3+
문자열, 음성, 시계열 데이터에 높은 성능을 보이는 RNN을 활용하여 영화 리뷰 감정 분석을 해보고 간단한 기계 번역기를 만들어봅니다.
44

5-
* [개념] RNN 기초
6-
* [프로젝트 1] 영화 리뷰 감정 분석
7-
* [프로젝트 2] Seq2Seq 기계 번역
8-
* 더 보기
5+
* RNN 개요
6+
* [영화 리뷰 감정 분석](text_classification.ipynb)
7+
* 자연어 전처리
8+
* RNN 모델 구현
9+
* [Seq2Seq 기계 번역](sequence_to_sequence.ipynb)
10+
* Seq2Seq 개요
11+
* 인코더
12+
* 디코더
13+
* Seq2Seq 모델 구현하기
Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,13 @@
1-
# 딥러닝 해킹하기
1+
# 딥러닝을 해킹하는 적대적 공격
2+
3+
딥러닝 모델을 의도적으로 헷갈리게 하는 적대적 예제에 대해 알아보고 적대적 예제를 생성하는 방법인 적대적 공격(adversarial attack)을 알아봅니다.
4+
5+
* 적대적 공격 이란
6+
* 적대적 공격의 종류
7+
* [FGSM 공격](fgsm_attack.ipynb)
8+
* 학습된 모델 불러오기
9+
* 공격할 미이지 불러오기
10+
* 공격 전 성능 확인하기
11+
* FGSM 공격 함수 정의
12+
* 적대적 예제 생성
13+
* 적대적 예제 성능 확인
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,16 @@
11
# 경쟁하며 학습하는 GAN
2+
3+
두 모델의 경쟁을 통해 최적화하는 특이한 학습 구조를 가진 GAN에 대해 알아봅니다. GAN은 데이터셋에 존재하지 않는 새로운 이미지를 생성할 수 있습니다. 예제로 Fashion MNIST 데이터셋을 학습하여 새로운 패션 아이템을 만듭니다.
4+
5+
* GAN 기초
6+
* 생성자와 판별자
7+
* [GAN으로 새로운 패션아이템 생성하기](gan.ipynb)
8+
* 학습 준비
9+
* 생성자와 판별자 구현
10+
* GAN 학습 구현
11+
* 결과물 시각화
12+
* [cGAN으로 생성 제어하기](conditional_gan.ipynb)
13+
* cGAN으로 원하는 이미지 생성하기
14+
* 조건부 생성자와 판별자
15+
* cGAN 학습 구현
16+
* 결과물 시각화
Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,12 @@
1-
# 주어진 환경과 상호작용을 통해 성장하는 DQN
1+
# 주어진 환경과 상호작용하며 성장하는 DQN
2+
3+
간단한 게임 환경에서 스스로 성장하는 DQN에 대해 알아보고 간단한 게임을 마스터하는 인공지능을 구현해봅니다.
4+
5+
* 강화학습과 DQN기초
6+
* [카트폴 게임 마스터하기](cartpole_dqn.ipynb)
7+
* 하이퍼파라미터
8+
* DQN 에이전트
9+
* 이전 경험 기억하기
10+
* 행동하기
11+
* 경험으로부터 배우기
12+
* 학습 시작하기

0 commit comments

Comments
 (0)