diff --git "a/01-\353\224\245\353\237\254\353\213\235\352\263\274_\355\214\214\354\235\264\355\206\240\354\271\230/README.md" "b/01-\353\224\245\353\237\254\353\213\235\352\263\274_\355\214\214\354\235\264\355\206\240\354\271\230/README.md" index f50be18..3ca1922 100644 --- "a/01-\353\224\245\353\237\254\353\213\235\352\263\274_\355\214\214\354\235\264\355\206\240\354\271\230/README.md" +++ "b/01-\353\224\245\353\237\254\353\213\235\352\263\274_\355\214\214\354\235\264\355\206\240\354\271\230/README.md" @@ -1,7 +1,9 @@ # 딥러닝과 파이토치 -딥러닝의 기본 지식을 쌓고 파이토치의 장단점에 대해 알아봅니다. +딥러닝의 기본 지식을 쌓고, 여러 기계학습 방식에 대해 배웁니다. 파이토치가 무엇이고, 왜 필요한지와, 텐서플로와 케라스 같은 라이브러리와 무엇이 다른지에 대해 알아봅니다. - * [개념] 신경망의 원리 - * [개념] 딥러닝과 신경망 - * [개념] 왜 파이토치인가? +* 인공지능과 머신러닝 +* 지도학습, 비지도학습, 그리고 강화학습 +* 딥러닝과 신경망 +* 파이토치가 개발되기까지 +* 왜 파이토치인가? \ No newline at end of file diff --git "a/02-\355\214\214\354\235\264\355\206\240\354\271\230_\354\213\234\354\236\221\355\225\230\352\270\260/README.md" "b/02-\355\214\214\354\235\264\355\206\240\354\271\230_\354\213\234\354\236\221\355\225\230\352\270\260/README.md" index 17142e1..a3fab0b 100644 --- "a/02-\355\214\214\354\235\264\355\206\240\354\271\230_\354\213\234\354\236\221\355\225\230\352\270\260/README.md" +++ "b/02-\355\214\214\354\235\264\355\206\240\354\271\230_\354\213\234\354\236\221\355\225\230\352\270\260/README.md" @@ -1,3 +1,7 @@ # 파이토치 시작하기 -파이토치 환경설정과 사용법을 익혀봅니다 +파이토치 환경 설정과 사용법을 익혀봅니다. 파이토치 외에도 책을 진행하면서 필요한 주변 도구를 설치합니다. + +* 파이토치 설치 & 환경구성 +* 파이토치 예제 내려받고 실행 확인하기 +* 주피터 노트북 \ No newline at end of file diff --git "a/03-\355\214\214\354\235\264\355\206\240\354\271\230\353\241\234_\352\265\254\355\230\204\355\225\230\353\212\224_ANN/README.md" "b/03-\355\214\214\354\235\264\355\206\240\354\271\230\353\241\234_\352\265\254\355\230\204\355\225\230\353\212\224_ANN/README.md" index edd0ecd..cb4c30f 100644 --- "a/03-\355\214\214\354\235\264\355\206\240\354\271\230\353\241\234_\352\265\254\355\230\204\355\225\230\353\212\224_ANN/README.md" +++ "b/03-\355\214\214\354\235\264\355\206\240\354\271\230\353\241\234_\352\265\254\355\230\204\355\225\230\353\212\224_ANN/README.md" @@ -1,3 +1,15 @@ -# 파이토치로 구현하는 신경망 +# 파이토치로 구현하는 ANN -파이토치를 이용하여 가장 기본적인 신경망을 만들어봅니다. +파이토치를 이용하여 가장 기본적인 인공 신경망을 구현하고 모델을 저장, 재사용하는 방법까지 배웁니다. + +* 텐서와 Autograd + * [텐서의 차원 자유자재로 다루기](tensor_basic.ipynb) + * [텐서를 이용한 연산과 행렬곱](tensor_operation.ipynb) + * [Autograd](autograd_basic.ipynb) +* [경사하강법으로 이미지 복원하기](image_recovery.ipynb) + * 오염된 이미지 문제 + * 오염된 이미지를 복원하는 방법 + * 문제 해결과 코드 구현 +* [신경망 모델 구현하기](basic_neural_network.ipynb) + * 인공 신경망(ANN) + * 간단한 분류 모델 구현하기 \ No newline at end of file diff --git "a/04-\355\214\250\354\205\230_\354\225\204\354\235\264\355\205\234\354\235\204_\352\265\254\353\266\204\355\225\230\353\212\224_DNN/README.md" "b/04-\355\214\250\354\205\230_\354\225\204\354\235\264\355\205\234\354\235\204_\352\265\254\353\266\204\355\225\230\353\212\224_DNN/README.md" index e7fa2fe..3665c17 100644 --- "a/04-\355\214\250\354\205\230_\354\225\204\354\235\264\355\205\234\354\235\204_\352\265\254\353\266\204\355\225\230\353\212\224_DNN/README.md" +++ "b/04-\355\214\250\354\205\230_\354\225\204\354\235\264\355\205\234\354\235\204_\352\265\254\353\266\204\355\225\230\353\212\224_DNN/README.md" @@ -1,3 +1,13 @@ -# 딥러닝으로 패션 아이템 구분하기 +# 패션 아이템을 구분하는 DNN -Fashion MNIST 데이터셋과 앞서 배운 인공신경망을 이용하여 패션아이템을 구분해봅니다. +앞서 배운 인공 신경망을 이용하여 Fashion MNIST 데이터셋 안의 패션 아이템을 구분해봅니다. + +* [Fashion MNIST 데이터셋 알아보기](fashion_mnist.ipynb) +* [인공 신경망으로 패션 아이템 분류하기](neural_network.ipynb) + * 환경 설정하기 + * 이미지 분류 문제 + * 이미지 분류를 위한 인공 신경망 구현 +* 성능 측정하기 +* [과적합과 드롭아웃](overfitting_and_regularization.ipynb) + * 데이터 늘리기 + * 드롭아웃 \ No newline at end of file diff --git "a/05-\354\235\264\353\257\270\354\247\200_\354\262\230\353\246\254\353\212\245\353\240\245\354\235\264_\355\203\201\354\233\224\355\225\234_CNN/README.md" "b/05-\354\235\264\353\257\270\354\247\200_\354\262\230\353\246\254\353\212\245\353\240\245\354\235\264_\355\203\201\354\233\224\355\225\234_CNN/README.md" index 8c12a9e..e337052 100644 --- "a/05-\354\235\264\353\257\270\354\247\200_\354\262\230\353\246\254\353\212\245\353\240\245\354\235\264_\355\203\201\354\233\224\355\225\234_CNN/README.md" +++ "b/05-\354\235\264\353\257\270\354\247\200_\354\262\230\353\246\254\353\212\245\353\240\245\354\235\264_\355\203\201\354\233\224\355\225\234_CNN/README.md" @@ -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)을 참고하여 만들어졌습니다.* diff --git "a/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/README.md" "b/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/README.md" index 9c74fcd..9616272 100644 --- "a/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/README.md" +++ "b/06-\354\202\254\353\236\214\354\235\230_\354\247\200\353\217\204_\354\227\206\354\235\264_\355\225\231\354\212\265\355\225\230\353\212\224_\354\230\244\355\206\240\354\235\270\354\275\224\353\215\224/README.md" @@ -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) + * 잡음 제거 오토인코더 구현 + * 잡음 제거 시각화하기 \ No newline at end of file diff --git "a/07-\341\204\211\341\205\256\341\206\253\341\204\216\341\205\241\341\204\214\341\205\245\341\206\250\341\204\213\341\205\265\341\206\253_\341\204\203\341\205\246\341\204\213\341\205\265\341\204\220\341\205\245\341\204\205\341\205\263\341\206\257_\341\204\216\341\205\245\341\204\205\341\205\265\341\204\222\341\205\241\341\204\202\341\205\263\341\206\253_RNN/README.md" "b/07-\341\204\211\341\205\256\341\206\253\341\204\216\341\205\241\341\204\214\341\205\245\341\206\250\341\204\213\341\205\265\341\206\253_\341\204\203\341\205\246\341\204\213\341\205\265\341\204\220\341\205\245\341\204\205\341\205\263\341\206\257_\341\204\216\341\205\245\341\204\205\341\205\265\341\204\222\341\205\241\341\204\202\341\205\263\341\206\253_RNN/README.md" index effb05b..7270ee8 100644 --- "a/07-\341\204\211\341\205\256\341\206\253\341\204\216\341\205\241\341\204\214\341\205\245\341\206\250\341\204\213\341\205\265\341\206\253_\341\204\203\341\205\246\341\204\213\341\205\265\341\204\220\341\205\245\341\204\205\341\205\263\341\206\257_\341\204\216\341\205\245\341\204\205\341\205\265\341\204\222\341\205\241\341\204\202\341\205\263\341\206\253_RNN/README.md" +++ "b/07-\341\204\211\341\205\256\341\206\253\341\204\216\341\205\241\341\204\214\341\205\245\341\206\250\341\204\213\341\205\265\341\206\253_\341\204\203\341\205\246\341\204\213\341\205\265\341\204\220\341\205\245\341\204\205\341\205\263\341\206\257_\341\204\216\341\205\245\341\204\205\341\205\265\341\204\222\341\205\241\341\204\202\341\205\263\341\206\253_RNN/README.md" @@ -1,8 +1,13 @@ # 순차적인 데이터를 처리하는 RNN -RNN을 활용하여 영화 리뷰 감정 분석과 기계번역을 해봅니다. +문자열, 음성, 시계열 데이터에 높은 성능을 보이는 RNN을 활용하여 영화 리뷰 감정 분석을 해보고 간단한 기계 번역기를 만들어봅니다. - * [개념] RNN 기초 - * [프로젝트 1] 영화 리뷰 감정 분석 - * [프로젝트 2] Seq2Seq 기계 번역 - * 더 보기 +* RNN 개요 +* [영화 리뷰 감정 분석](text_classification.ipynb) + * 자연어 전처리 + * RNN 모델 구현 +* [Seq2Seq 기계 번역](sequence_to_sequence.ipynb) + * Seq2Seq 개요 + * 인코더 + * 디코더 + * Seq2Seq 모델 구현하기 \ No newline at end of file diff --git "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/README.md" "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/README.md" index 692f5af..daaf842 100644 --- "a/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/README.md" +++ "b/08-\353\224\245\353\237\254\353\213\235\354\235\204_\355\225\264\355\202\271\355\225\230\353\212\224_\354\240\201\353\214\200\354\240\201_\352\263\265\352\262\251/README.md" @@ -1 +1,13 @@ -# 딥러닝 해킹하기 +# 딥러닝을 해킹하는 적대적 공격 + +딥러닝 모델을 의도적으로 헷갈리게 하는 적대적 예제에 대해 알아보고 적대적 예제를 생성하는 방법인 적대적 공격(adversarial attack)을 알아봅니다. + +* 적대적 공격 이란 +* 적대적 공격의 종류 +* [FGSM 공격](fgsm_attack.ipynb) + * 학습된 모델 불러오기 + * 공격할 미이지 불러오기 + * 공격 전 성능 확인하기 + * FGSM 공격 함수 정의 + * 적대적 예제 생성 + * 적대적 예제 성능 확인 \ No newline at end of file diff --git "a/09-\352\262\275\354\237\201\355\225\230\353\251\260_\355\225\231\354\212\265\355\225\230\353\212\224_GAN/README.md" "b/09-\352\262\275\354\237\201\355\225\230\353\251\260_\355\225\231\354\212\265\355\225\230\353\212\224_GAN/README.md" index d00120d..bdf607d 100644 --- "a/09-\352\262\275\354\237\201\355\225\230\353\251\260_\355\225\231\354\212\265\355\225\230\353\212\224_GAN/README.md" +++ "b/09-\352\262\275\354\237\201\355\225\230\353\251\260_\355\225\231\354\212\265\355\225\230\353\212\224_GAN/README.md" @@ -1 +1,16 @@ # 경쟁하며 학습하는 GAN + +두 모델의 경쟁을 통해 최적화하는 특이한 학습 구조를 가진 GAN에 대해 알아봅니다. GAN은 데이터셋에 존재하지 않는 새로운 이미지를 생성할 수 있습니다. 예제로 Fashion MNIST 데이터셋을 학습하여 새로운 패션 아이템을 만듭니다. + +* GAN 기초 + * 생성자와 판별자 +* [GAN으로 새로운 패션아이템 생성하기](gan.ipynb) + * 학습 준비 + * 생성자와 판별자 구현 + * GAN 학습 구현 + * 결과물 시각화 +* [cGAN으로 생성 제어하기](conditional_gan.ipynb) + * cGAN으로 원하는 이미지 생성하기 + * 조건부 생성자와 판별자 + * cGAN 학습 구현 + * 결과물 시각화 \ No newline at end of file diff --git "a/10-\354\243\274\354\226\264\354\247\204_\355\231\230\352\262\275\352\263\274_\354\203\201\355\230\270\354\236\221\354\232\251\355\225\230\353\251\260_\354\204\261\354\236\245\355\225\230\353\212\224_DQN/README.md" "b/10-\354\243\274\354\226\264\354\247\204_\355\231\230\352\262\275\352\263\274_\354\203\201\355\230\270\354\236\221\354\232\251\355\225\230\353\251\260_\354\204\261\354\236\245\355\225\230\353\212\224_DQN/README.md" index e7eef48..01516b6 100644 --- "a/10-\354\243\274\354\226\264\354\247\204_\355\231\230\352\262\275\352\263\274_\354\203\201\355\230\270\354\236\221\354\232\251\355\225\230\353\251\260_\354\204\261\354\236\245\355\225\230\353\212\224_DQN/README.md" +++ "b/10-\354\243\274\354\226\264\354\247\204_\355\231\230\352\262\275\352\263\274_\354\203\201\355\230\270\354\236\221\354\232\251\355\225\230\353\251\260_\354\204\261\354\236\245\355\225\230\353\212\224_DQN/README.md" @@ -1 +1,12 @@ -# 주어진 환경과 상호작용을 통해 성장하는 DQN +# 주어진 환경과 상호작용하며 성장하는 DQN + +간단한 게임 환경에서 스스로 성장하는 DQN에 대해 알아보고 간단한 게임을 마스터하는 인공지능을 구현해봅니다. + +* 강화학습과 DQN기초 +* [카트폴 게임 마스터하기](cartpole_dqn.ipynb) + * 하이퍼파라미터 + * DQN 에이전트 + * 이전 경험 기억하기 + * 행동하기 + * 경험으로부터 배우기 + * 학습 시작하기 \ No newline at end of file diff --git a/README.md b/README.md index ae61db3..1272cf9 100644 --- a/README.md +++ b/README.md @@ -12,103 +12,49 @@ * Python >= 3.6.1 -## 목차 - -1. [딥러닝과 파이토치](01-딥러닝과_파이토치) - 딥러닝의 기본 지식을 쌓고 파이토치의 장단점에 대해 알아봅니다. - * 인공지능과 머신러닝 - * 지도학습, 비지도학습, 그리고 강화학습 - * 딥러닝과 신경망 - * 파이토치가 개발되기까지 - * 왜 파이토치인가? -2. [파이토치 시작하기](02-파이토치_시작하기) - 파이토치 환경설정과 사용법을 익혀봅니다 - * 파이토치 설치 & 환경구성 - * 파이토치 예제 내려받고 실행 확인하기 - * 주피터 노트북 -3. [파이토치로 구현하는 ANN](03-파이토치로_구현하는_ANN) - 파이토치를 이용하여 가장 기본적인 신경망을 만들어봅니다. - * 텐서와 Autograd - * [텐서의 차원 자유자재로 다루기](03-파이토치로_구현하는_ANN/tensor_basic.ipynb) - * [텐서를 이용한 연산과 행렬곱](03-파이토치로_구현하는_ANN/tensor_operation.ipynb) - * [Autograd](03-파이토치로_구현하는_ANN/autograd_basic.ipynb) - * [경사하강법으로 이미지 복원하기](03-파이토치로_구현하는_ANN/image_recovery.ipynb) - * 오염된 이미지 문제 - * 오염된 이미지를 복원하는 방법 - * 문제 해결과 코드 구현 - * [신경망 모델 구현하기](03-파이토치로_구현하는_ANN/basic_neural_network.ipynb) - * 인공 신경망(ANN) - * 간단한 분류 모델 구현하기 -4. [패션 아이템을 구분하는 DNN](04-패션_아이템을_구분하는_DNN) - Fashion MNIST 데이터셋과 앞서 배운 인공신경망을 이용하여 패션아이템을 구분해봅니다. - * [Fashion MNIST 데이터셋 알아보기](04-패션_아이템을_구분하는_DNN/fashion-mnist.ipynb) - * [인공 신경망으로 패션 아이템 분류하기](04-패션_아이템을_구분하는_DNN/neural-network.ipynb) - * 환경 설정하기 - * 이미지 분류 문제 - * 이미지 분류를 위한 인공 신경망 구현 - * 성능 측정하기 - * [과적합과 드롭아웃](04-패션_아이템을_구분하는_DNN/overfitting-and-regularization.ipynb) - * 데이터 늘리기 - * 드롭아웃 -5. [이미지 처리능력이 탁월한 CNN](05-이미지_처리능력이_탁월한_CNN) - * CNN 기초 - * 컴퓨터가 보는 이미지 - * 컨볼루션 - * CNN 모델 - * [CNN 모델 구현하기](05-이미지_처리능력이_탁월한_CNN/cnn.ipynb) - * [ResNet으로 컬러 데이터셋에 적용하기](05-이미지_처리능력이_탁월한_CNN/resnet.ipynb) - * ResNet 소개 - * CIFAR-10 데이터셋 - * CNN을 깊게 쌓는 방법 -6. [사람의 지도 없이 학습하는 오토인코더](06-사람의_지도_없이_학습하는_오토인코더) - 레이블이 없는 상태서 특징추출을 하는 오토인코더에 대해 배워봅니다. - * 오토인코더 기초 - * [오토인코더로 이미지의 특징 추출하기](06-사람의_지도_없이_학습하는_오토인코더/basic_autoencoder.ipynb) - * 오토인코더 구현 - * 잠재 변수 들여다보기 - * [오토인코더로 망가진 이미지 복원하기](06-사람의_지도_없이_학습하는_오토인코더/denoising_autoencoder.ipynb) - * 잡음 제거 오토인코더 구현 - * 잡음 제거 시각화하기 -7. [순차적인 데이터를 처리하는 RNN](07-순차적인_데이터를_처리하는_RNN) - RNN을 활용하여 영화 리뷰 감정 분석과 기계번역을 해봅니다 - * RNN 개요 - * [영화 리뷰 감정 분석](07-순차적인_데이터를_처리하는_RNN/text-classification.ipynb) - * 자연어 전처리 - * RNN 모델 구현 - * [Seq2Seq 기계 번역](07-순차적인_데이터를_처리하는_RNN/sequence-to-sequence.ipynb) - * Seq2Seq 개요 - * 인코더 - * 디코더 - * Seq2Seq 모델 구현하기 - * 더 보기 -8. [딥러닝을 해킹하는 적대적 공격](08-딥러닝을_해킹하는_적대적_공격) - 적대적 공격 - * 적대적 공격 이란 - * 적대적 공격의 종류 - * [FGSM 공격](08-딥러닝을_해킹하는_적대적_공격/fgsm-attack.ipynb) - * 학습된 모델 불러오기 - * 공격할 미이지 불러오기 - * 공격 전 성능 확인하기 - * FGSM 공격 함수 정의 - * 적대적 예제 생성 - * 적대적 예제 성능 확인 -9. [경쟁하며 학습하는 GAN](09-경쟁하며_학습하는_GAN) - GAN을 이용하여 새로운 패션 아이템을 만들어봅니다. - * GAN 기초 - * 생성자와 판별자 - * [GAN으로 새로운 패션아이템 생성하기](09-경쟁하며_학습하는_GAN/gan.ipynb) - * 학습 준비 - * 생성자와 판별자 구현 - * GAN 학습 구현 - * 결과물 시각화 - * [cGAN으로 생성 제어하기](09-경쟁하며_학습하는_GAN/conditional-gan.ipynb) - * cGAN으로 원하는 이미지 생성하기 - * 조건부 생성자와 판별자 - * cGAN 학습 구현 - * 결과물 시각화 - * 더 보기 -10. [주어진 환경과 상호작용하며 성장하는 DQN](10-주어진_환경과_상호작용하며_성장하는_DQN) - 간단한 게임환경 안에서 스스로 성장하는 DQN 에이전트를 만들어봅니다. - * 강화학습과 DQN기초 - * [카트폴 게임 마스터하기](10-주어진_환경과_상호작용을_통해_학습하는_DQN/cartpole-dqn.ipynb) - * 하이퍼파라미터 - * DQN 에이전트 - * 이전 경험 기억하기 - * 행동하기 - * 경험으로부터 배우기 - * 학습 시작하기 - * 더 보기 +## 구성 + +이 책은 딥러닝과 파이토치를 처음 접하는 사람이 쉽게 이론을 익히고 구현할 수 있도록 구성돼 있습니다. 딥러닝은 언어부터 이미지까지 넓은 분야에 사용되고 있어서 응용하는 분야에 따라 그 형태가 다양합니다. 따라서 최대한 다양한 학습 방식과 딥러닝 모델을 구현할 수 있도록 예제를 준비했습니다. + +### [1장. 딥러닝과 파이토치](01-딥러닝과_파이토치) + +딥러닝의 기본 지식을 쌓고, 여러 기계학습 방식에 대해 배웁니다. 파이토치가 무엇이고, 왜 필요한지와, 텐서플로와 케라스 같은 라이브러리와 무엇이 다른지에 대해 알아봅니다. + +### [2장. 파이토치 시작하기](02-파이토치_시작하기) + +파이토치 환경 설정과 사용법을 익혀봅니다. 파이토치 외에도 책을 진행하면서 필요한 주변 도구를 설치합니다. + +### [3장. 파이토치로 구현하는 ANN](03-파이토치로_구현하는_ANN) + +파이토치를 이용하여 가장 기본적인 인공 신경망을 구현하고 모델을 저장, 재사용하는 방법까지 배웁니다. + +### [4장. 패션 아이템을 구분하는 DNN](04-패션_아이템을_구분하는_DNN) + +앞서 배운 인공 신경망을 이용하여 Fashion MNIST 데이터셋 안의 패션 아이템을 구분해봅니다. + +### [5장. 이미지 처리능력이 탁월한 CNN](05-이미지_처리능력이_탁월한_CNN) + +영상 인식에 탁월한 성능을 자랑하는 CNN에 대하여 알아봅니다. 여기에 그치지 않고 CNN을 더 쌓아 올려 성능을 올린 ResNet에 대해 알아보고 구현합니다. + +### [6장. 사람의 지도 없이 학습하는 오토인코더](06-사람의_지도_없이_학습하는_오토인코더) + +정답이 없는 상태에서 특징을 추출하는 비지도학습에 대해 알아보고 대표적인 비지도학습 모델인 오토인코더를 이해하고 구현하는 방법을 익힙니다. + +### [7장. 순차적인 데이터를 처리하는 RNN](07-순차적인_데이터를_처리하는_RNN) + +문자열, 음성, 시계열 데이터에 높은 성능을 보이는 RNN을 활용하여 영화 리뷰 감정 분석을 해보고 간단한 기계 번역기를 만들어봅니다. + +### [8장. 딥러닝을 해킹하는 적대적 공격](08-딥러닝을_해킹하는_적대적_공격) + +딥러닝 모델을 의도적으로 헷갈리게 하는 적대적 예제에 대해 알아보고 적대적 예제를 생성하는 방법인 적대적 공격(adversarial attack)을 알아봅니다. + +### [9장. 경쟁하며 학습하는 GAN](09-경쟁하며_학습하는_GAN) + +두 모델의 경쟁을 통해 최적화하는 특이한 학습 구조를 가진 GAN에 대해 알아봅니다. GAN은 데이터셋에 존재하지 않는 새로운 이미지를 생성할 수 있습니다. 예제로 Fashion MNIST 데이터셋을 학습하여 새로운 패션 아이템을 만듭니다. + +### [10장. 주어진 환경과 상호작용하며 성장하는 DQN](10-주어진_환경과_상호작용하며_성장하는_DQN) + +간단한 게임 환경에서 스스로 성장하는 DQN에 대해 알아보고 간단한 게임을 마스터하는 인공지능을 구현해봅니다. ## 참여하기 diff --git a/test/test_10.py b/test/test_10.py index 448ccb1..56f54ef 100644 --- a/test/test_10.py +++ b/test/test_10.py @@ -4,7 +4,7 @@ # setup path -chapter_name = "08-딥러닝을_해킹하는_Adversarial_Attack" +chapter_name = "10-주어진_환경과_상호작용하며_성장하는_DQN" dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), ".." , chapter_name) sys.path.append(dir_path)