This repository has been archived by the owner on Oct 19, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 244
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
153 additions
and
195 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,9 @@ | ||
# 딥러닝과 파이토치 | ||
|
||
딥러닝의 기본 지식을 쌓고 파이토치의 장단점에 대해 알아봅니다. | ||
딥러닝의 기본 지식을 쌓고, 여러 기계학습 방식에 대해 배웁니다. 파이토치가 무엇이고, 왜 필요한지와, 텐서플로와 케라스 같은 라이브러리와 무엇이 다른지에 대해 알아봅니다. | ||
|
||
* [개념] 신경망의 원리 | ||
* [개념] 딥러닝과 신경망 | ||
* [개념] 왜 파이토치인가? | ||
* 인공지능과 머신러닝 | ||
* 지도학습, 비지도학습, 그리고 강화학습 | ||
* 딥러닝과 신경망 | ||
* 파이토치가 개발되기까지 | ||
* 왜 파이토치인가? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,7 @@ | ||
# 파이토치 시작하기 | ||
|
||
파이토치 환경설정과 사용법을 익혀봅니다 | ||
파이토치 환경 설정과 사용법을 익혀봅니다. 파이토치 외에도 책을 진행하면서 필요한 주변 도구를 설치합니다. | ||
|
||
* 파이토치 설치 & 환경구성 | ||
* 파이토치 예제 내려받고 실행 확인하기 | ||
* 주피터 노트북 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,15 @@ | ||
# 파이토치로 구현하는 신경망 | ||
# 파이토치로 구현하는 ANN | ||
|
||
파이토치를 이용하여 가장 기본적인 신경망을 만들어봅니다. | ||
파이토치를 이용하여 가장 기본적인 인공 신경망을 구현하고 모델을 저장, 재사용하는 방법까지 배웁니다. | ||
|
||
* 텐서와 Autograd | ||
* [텐서의 차원 자유자재로 다루기](tensor_basic.ipynb) | ||
* [텐서를 이용한 연산과 행렬곱](tensor_operation.ipynb) | ||
* [Autograd](autograd_basic.ipynb) | ||
* [경사하강법으로 이미지 복원하기](image_recovery.ipynb) | ||
* 오염된 이미지 문제 | ||
* 오염된 이미지를 복원하는 방법 | ||
* 문제 해결과 코드 구현 | ||
* [신경망 모델 구현하기](basic_neural_network.ipynb) | ||
* 인공 신경망(ANN) | ||
* 간단한 분류 모델 구현하기 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,13 @@ | ||
# 딥러닝으로 패션 아이템 구분하기 | ||
# 패션 아이템을 구분하는 DNN | ||
|
||
Fashion MNIST 데이터셋과 앞서 배운 인공신경망을 이용하여 패션아이템을 구분해봅니다. | ||
앞서 배운 인공 신경망을 이용하여 Fashion MNIST 데이터셋 안의 패션 아이템을 구분해봅니다. | ||
|
||
* [Fashion MNIST 데이터셋 알아보기](fashion_mnist.ipynb) | ||
* [인공 신경망으로 패션 아이템 분류하기](neural_network.ipynb) | ||
* 환경 설정하기 | ||
* 이미지 분류 문제 | ||
* 이미지 분류를 위한 인공 신경망 구현 | ||
* 성능 측정하기 | ||
* [과적합과 드롭아웃](overfitting_and_regularization.ipynb) | ||
* 데이터 늘리기 | ||
* 드롭아웃 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,16 @@ | ||
# 이미지 인식능력이 탁월한 CNN | ||
# 이미지 처리능력이 탁월한 CNN | ||
|
||
영상 인식에 탁월한 성능을 자랑하는 CNN에 대하여 알아봅니다. 여기에 그치지 않고 CNN을 더 쌓아 올려 성능을 올린 ResNet에 대해 알아보고 구현합니다. | ||
|
||
* CNN 기초 | ||
* 컴퓨터가 보는 이미지 | ||
* 컨볼루션 | ||
* CNN 모델 | ||
* [CNN 모델 구현하기](cnn.ipynb) | ||
* [ResNet으로 컬러 데이터셋에 적용하기](resnet.ipynb) | ||
* ResNet 소개 | ||
* CIFAR-10 데이터셋 | ||
* CNN을 깊게 쌓는 방법 | ||
|
||
|
||
*본 튜토리얼은 PyTorch의 공식 튜토리얼 (https://github.com/pytorch/examples/blob/master/mnist/main.py)을 참고하여 만들어졌습니다.* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,82 +1,11 @@ | ||
# 사람의 지도 없이 학습하는 Autoencoder | ||
# 사람의 지도 없이 학습하는 오토인코더 | ||
|
||
레이블이 없는 상태서 특징추출을 하는 오토인코더에 대해 배워봅니다. | ||
정답이 없는 상태에서 특징을 추출하는 비지도학습에 대해 알아보고 대표적인 비지도학습 모델인 오토인코더를 이해하고 구현하는 방법을 익힙니다. | ||
|
||
* [개념] 오토인코더 기초 | ||
* [프로젝트 1] 오토인코더로 이미지의 특징을 추출하기 | ||
* [프로젝트 2] 오토인코더로 망가진 이미지 복원하기 | ||
* 더 보기 | ||
|
||
## 오토인코더 기초 | ||
|
||
지금까지는 입력값에 정답이 포함된 지도학습을 위주로 공부했습니다. | ||
반대로 이 챕터에서는 입력값(X)만이 주어진채로 비지도학습을 하는 방법인 | ||
오토인코더(Autoencoder)에 대해 알아보겠습니다. | ||
|
||
이미지, 오디오, 텍스트 등 데이터 형태와 관계 없이 사람이 직접 정답을 알려주는 경우는 | ||
사람이던 컴퓨터던 매우 효율적으로 학습할 수 있습니다. | ||
바로 입력과 출력의 관계만 설명할 수 있으면 되기 때문입니다. | ||
하지만 데이터셋에 정답이 포함되지 않은 경우엔 이야기가 달라집니다. | ||
외국어를 배울때 원어민이 옆에서 과외를 해줄때는 배울만 하지만, | ||
한 글자도 모르는 상태에서 외국어로 된 책을 통해 배우라고 | ||
하는 것은 어려운것과 비슷한 느낌입니다. | ||
|
||
그럼에도 불구하고 주어진 데이터만으로 패턴을 찾는 비지도학습은 | ||
흥미로운 주제입니다. 세상에 존재하고 계속 만들어지고 있는 대부분의 | ||
데이터는 정답이 없기 때문입니다. | ||
인공지능이 실생활과 서비스에서 진정한 확장성을 가지려면 | ||
비지도학습과 준지도학습의 발전이 따라야 한다고 생각합니다. | ||
|
||
지도학습은 단순히 말해 입력 x와 정답 y사이를 잇는 관계를 찾는 것 입니다. | ||
정답이 있으면 현재 예측값이 얼마나 틀렸는지도 명확하고 | ||
오차를 측정할 수 있기 때문에 오류값(Loss)을 구하기도 쉽습니다. | ||
|
||
지도학습의 이 아이디어를 빌려 x를 받아 x를 출력하도록 설계된 | ||
신경망이 바로 오토인코더 입니다. | ||
단, 신경망은 범용근사자(Universal Function Approximator)로서 | ||
근사치를 출력하기 때문에 입력된 x를 복원한다는 개념이 더 알맞습니다. | ||
그러므로 오류값도 x를 얼마나 복원했는지를 뜻하는 | ||
복원오차, 혹은 정보손실값(Reconstruction Loss)이라는 용어를 사용합니다. | ||
|
||
![autoencoder](./assets/autoencoder.png) | ||
|
||
오토인코더의 또 다른 중요한 특징은 입력과 출력의 크기는 같지만 | ||
중간으로 갈수록 신경망의 차원이 줄어든다는겁니다. | ||
이런 특이한 구조로 인하여 정보의 통로가 줄어들고 | ||
병목현상이 일어나 입력의 특징들이 '압축'이 되도록 학습됩니다. | ||
작은차원에 고인 압축된 표현을 우리말로 | ||
"잠재변수"(Latent Vector)라고하고, | ||
간단하게 줄여 `z`라고도 부릅니다. | ||
|
||
또, Latent Vector의 앞뒤를 구분하여 | ||
앞부분을 인코더(Encoder), | ||
뒷부분을 디코더(Decoder)라고 합니다. | ||
인코더는 정보를 받아 압축을 하고, | ||
디코더는 압축된 표현을 풀어 다시 입력을 | ||
복원시키는 역할을 하여 붙여진 이름입니다. | ||
|
||
실제로 훈련시켜 보면 오토인코더로 입력이 다시 복원이 되는것이 신기하긴 | ||
하지만 단순히 입력을 복제하는 것이 핵심은 아닙니다. | ||
진짜로 흥미로운 부분은 압축된 데이터입니다. | ||
앞서 말했듯 신경망이 받은 이미지를 복원하도록 학습하고 나면 | ||
중간층에 이미지의 정보를 낮은 차원에 저장하게 됩니다. | ||
낮은차원에 높은 밀도로 표현되는 데이터이므로 '의미의 압축'이 일어납니다. | ||
이것은 흔히 우리가 알고있는 `zip`압축 같은 것이 아닙니다. | ||
단순히 데이터의 크기를 줄이고 싶을 경우 | ||
기존 압축 알고리즘을 사용하는것이 빠르고 안전하나, | ||
오토인코더는 복잡한 데이터의 의미를 담을 수 있다는 점에서 특별합니다. | ||
|
||
정보의 압축이 가능하단 것은 결국 | ||
정보의 구성에 우선순위가 존재한다는 뜻입니다. | ||
그리고 압축이란 정보에서 덜 중요한 요소를 | ||
버리는 과정이라고 정의할 수 있습니다. | ||
그러므로 오토인코더에서는 필연적으로 정보의 손실이 일어나게 됩니다. | ||
이것은 정보의 디테일을 잃어버린다는 뜻이 될 수 있으나, | ||
오히려 중요하지 않은 정보를 떼어내고 중요한 정보만 남겨두는 | ||
일종의 데이터 가공이라고 볼 수도 있습니다. | ||
|
||
이런 특징으로 인해 오토인코더는 주로 복잡한 비선형 데이터의 | ||
차원을 줄이는 용도로 쓰이나 산업에서 비정상 거래 검출, | ||
데이터 시각화와 복원, 의미 추출, 이미지 검색등에도 쓰이고 있습니다. | ||
그리고 여러가지의 파생 모델들이 | ||
기계번역, 생성모델 등 여러가지 응용 분야들의 기초가 되고 있습니다. | ||
* 오토인코더 기초 | ||
* [오토인코더로 이미지의 특징 추출하기](basic_autoencoder.ipynb) | ||
* 오토인코더 구현 | ||
* 잠재 변수 들여다보기 | ||
* [오토인코더로 망가진 이미지 복원하기](denoising_autoencoder.ipynb) | ||
* 잡음 제거 오토인코더 구현 | ||
* 잡음 제거 시각화하기 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,13 @@ | ||
# 순차적인 데이터를 처리하는 RNN | ||
|
||
RNN을 활용하여 영화 리뷰 감정 분석과 기계번역을 해봅니다. | ||
문자열, 음성, 시계열 데이터에 높은 성능을 보이는 RNN을 활용하여 영화 리뷰 감정 분석을 해보고 간단한 기계 번역기를 만들어봅니다. | ||
|
||
* [개념] RNN 기초 | ||
* [프로젝트 1] 영화 리뷰 감정 분석 | ||
* [프로젝트 2] Seq2Seq 기계 번역 | ||
* 더 보기 | ||
* RNN 개요 | ||
* [영화 리뷰 감정 분석](text_classification.ipynb) | ||
* 자연어 전처리 | ||
* RNN 모델 구현 | ||
* [Seq2Seq 기계 번역](sequence_to_sequence.ipynb) | ||
* Seq2Seq 개요 | ||
* 인코더 | ||
* 디코더 | ||
* Seq2Seq 모델 구현하기 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,13 @@ | ||
# 딥러닝 해킹하기 | ||
# 딥러닝을 해킹하는 적대적 공격 | ||
|
||
딥러닝 모델을 의도적으로 헷갈리게 하는 적대적 예제에 대해 알아보고 적대적 예제를 생성하는 방법인 적대적 공격(adversarial attack)을 알아봅니다. | ||
|
||
* 적대적 공격 이란 | ||
* 적대적 공격의 종류 | ||
* [FGSM 공격](fgsm_attack.ipynb) | ||
* 학습된 모델 불러오기 | ||
* 공격할 미이지 불러오기 | ||
* 공격 전 성능 확인하기 | ||
* FGSM 공격 함수 정의 | ||
* 적대적 예제 생성 | ||
* 적대적 예제 성능 확인 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,16 @@ | ||
# 경쟁하며 학습하는 GAN | ||
|
||
두 모델의 경쟁을 통해 최적화하는 특이한 학습 구조를 가진 GAN에 대해 알아봅니다. GAN은 데이터셋에 존재하지 않는 새로운 이미지를 생성할 수 있습니다. 예제로 Fashion MNIST 데이터셋을 학습하여 새로운 패션 아이템을 만듭니다. | ||
|
||
* GAN 기초 | ||
* 생성자와 판별자 | ||
* [GAN으로 새로운 패션아이템 생성하기](gan.ipynb) | ||
* 학습 준비 | ||
* 생성자와 판별자 구현 | ||
* GAN 학습 구현 | ||
* 결과물 시각화 | ||
* [cGAN으로 생성 제어하기](conditional_gan.ipynb) | ||
* cGAN으로 원하는 이미지 생성하기 | ||
* 조건부 생성자와 판별자 | ||
* cGAN 학습 구현 | ||
* 결과물 시각화 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,12 @@ | ||
# 주어진 환경과 상호작용을 통해 성장하는 DQN | ||
# 주어진 환경과 상호작용하며 성장하는 DQN | ||
|
||
간단한 게임 환경에서 스스로 성장하는 DQN에 대해 알아보고 간단한 게임을 마스터하는 인공지능을 구현해봅니다. | ||
|
||
* 강화학습과 DQN기초 | ||
* [카트폴 게임 마스터하기](cartpole_dqn.ipynb) | ||
* 하이퍼파라미터 | ||
* DQN 에이전트 | ||
* 이전 경험 기억하기 | ||
* 행동하기 | ||
* 경험으로부터 배우기 | ||
* 학습 시작하기 |
Oops, something went wrong.