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

Commit b6bb679

Browse files
committed
rename files in chapter 8 9 10
1 parent 790c5ce commit b6bb679

File tree

14 files changed

+27
-222
lines changed

14 files changed

+27
-222
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,92 +1 @@
11
# 딥러닝 해킹하기
2-
3-
* [개념] 적대적 공격(Adversarial Attack) 이란?
4-
* [프로젝트 1] FGSM 공격
5-
* [프로젝트 2] 목표를 정해 공격하기
6-
7-
사람이 착시를 보듯 딥러닝 모델도 일종의 '착시'를 봅니다.
8-
다만 이미지를 인식하는 구조가 다르기 때문에
9-
컴퓨터가 보는 착시는 사람의 그것과는 다른 종류입니다.
10-
머신러닝 모델의 착시를 유도하는 이미지, 오디오, 등 모든 입력을
11-
적대적 예제(Adversarial Example)라고 일컫습니다.
12-
의도적으로 적대적 예제를 생성해서
13-
여러가지 머신러닝 기반 시스템에 보안 문제를 야기하는
14-
적대적 공격(Adversarial Attack)에 대해서 자세히 알아보겠습니다.
15-
16-
## 적대적 공격(Adversarial Attack) 이란?
17-
18-
머신러닝에 의존한 서비스가 많아지면서
19-
자연스럽게 머신러닝의 보안 또한 중요도 또한 커지고 있습니다.
20-
최근 구글 브레인에서 진행한 연구에 의하면 모든 머신러닝 분류기가
21-
속임수에 의해 잘못된 예측을 할 수 있다고 합니다.
22-
더욱 놀라운 것은 복잡한 딥러닝 모델을 속이는데
23-
그리 많은 노력과 기술이 들어가지 않는다는 것입니다.
24-
25-
자율주행, 은행의 비정상거래탐지, 영상인식, 의료영상분석등
26-
실수가 용납되지 않는 분야에서도
27-
시스템의 신뢰도를 떨어뜨린다는 점에서 약점이 존재한 다는 것은 치명적입니다.
28-
자율주행차가 표지판을 보지 못할수도, 의료진단 시스템이 병을 놓칠수도 있고,
29-
심지어는 영상 뿐만 아니라 텍스트와 오디오까지 적용 가능하다는 것이
30-
최근 밝혀지고 있습니다.
31-
공격 방법이 조금만 더 발전되면 카페의 음악 속에 몰래 명령을 넣어
32-
음성비서가 오작동하게 할 수도 있을 것입니다.
33-
사실 아직까지는 딥러닝 모델 내부를 해석하는 초기 단계에 있기 때문에
34-
최근 연구에서도 효과적인 방어법을 시원하게 내놓진 못하고 있습니다.
35-
이와 같은 이유로 각종 공격과 방어 방법, 그리고 더 근본적으로는
36-
딥러닝 모델이 어떻게 데이터를 해석하는지 파해치는 분야의 연구가
37-
활발하게 진행중입니다.
38-
39-
![적대적 공격 개념 그림]()
40-
41-
앞서 딥러닝의 가능성과 성능을 목격한 상태에서,
42-
어떻게 이것이 가능한가 의문이 들 것입니다.
43-
잘 학습된 딥러닝 모델도 가끔씩 실수를 일으키기 마련입니다.
44-
모델 내에서는 연속적인 입력의 변환이 일어나게 되는데,
45-
변환은 입력의 특정 구조에 매우 예민하게 반응합니다.
46-
모델이 예민하게 반응하는 부분을 공략함으로서
47-
모델을 헷갈리게 할 수 있는 것입니다.
48-
49-
보통 컴퓨터를 해킹하는 방법이 무궁무진 하듯
50-
적대적 공격은 여러 종류가 있습니다.
51-
그중 대표적인 몇개를 알아보도록 하겠습니다.
52-
53-
`torchvision`의 학습된 모델을 가져와서
54-
ResNet과 DenseNet같은 복잡한 모델을 무력화 시키는 것이
55-
얼마나 간단한지 직접 느껴보시기 바랍니다.
56-
57-
![ResNet vs FGSM 그림]()
58-
59-
60-
## 적대적 공격의 종류
61-
62-
적대적 공격은 적절한 잡음 (노이즈)를
63-
생성해 사람의 눈에는 똑같이 보이지만 머신러닝 모델을 헷갈리게 만드는 것이 핵심입니다.
64-
인식 오류를 일으키지만 가장 원본과 차이가 적은,
65-
즉 제일 작은 노름(norm)을 가진 노이즈를 찾는 것이고,
66-
결국 최적화(Optimization)문제로 해석할 수 있습니다.
67-
68-
노이즈를 생성하는 방법은 굉장히 여러가지입니다.
69-
모델 정보가 필요한지,
70-
우리가 원하는 정답으로 유도할 수 있는지,
71-
여러 모델을 동시에 헷갈리게 할 수 있는지,
72-
학습이 필요한지 등의 여부에 따라 종류가 나뉩니다.
73-
74-
대표적인 분류 방법 몇가지를 알아보겠습니다.
75-
처음으로 그래디언트 같은 모델 정보가 필요한지의 여부에 따라서
76-
모델 정보를 토대로 노이즈를 생성하는 화이트박스(White Box),
77-
그리고 모델 정보 없이 노이즈를 생성하는 블랙박스(Black Box)로 나뉩니다.
78-
그리고 우리가 원하는 정답으로 유도가 가능하다면 Targeted,
79-
아니라면 Non-Targeted라고 부릅니다.
80-
마지막으로 한 노이즈가 특정 입력에만 적용되면 Image Specific,
81-
모든 이미지에 동시에 적용이 가능한 노이즈면 Universal하다고 합니다.
82-
83-
가장 강력한 공격방법은, 모델 정보 필요 없이,
84-
우리가 원하는 정답으로 유도 가능하고,
85-
학습이 필요하지 않으며 여러 모델에게 동시에 적용 가능한 방법이겠지만,
86-
각 특징에 기회비용이 존재합니다.
87-
88-
![적대적 공격 종류 그림]()
89-
90-
물론 실제로 사용되는 딥러닝 시스템들은
91-
모델 내부 정보를 공개하고 있지 않고 여러가지 노이즈를 제거하는
92-
전처리 과정을 거치므로 훨씬 공격하기 힘들어지게 됩니다.
Original file line numberDiff line numberDiff line change
@@ -1,76 +1 @@
11
# 경쟁을 통해 성장하는 GAN
2-
3-
GAN을 이용하여 새로운 패션 아이템을 만들어봅니다.
4-
5-
* [개념] GAN 기초
6-
* [프로젝트 1] GAN으로 새로운 패션아이템 생성하기
7-
* [프로젝트 2] Conditional GAN으로 생성 컨트롤하기
8-
* 더 보기
9-
10-
## GAN 기초
11-
12-
GAN을 설명할때 항상 나오는 명언이 있습니다.
13-
바로 양자 역학에 대한 공으로 노벨 물리학상을 받은
14-
리처드 파인만(Richard Feynman) 교수의
15-
"내가 만들어낼 수 없다면 이해하지 못한 것이다"
16-
(What I cannot create, I do not understand)
17-
라는 문장입니다.
18-
빈 종이가 주어졌을때 처음부터 끝까지 *자신만의 자세한 설명*
19-
을 할 수 있어야 진정한 '이해'에
20-
도달한다는 취지에서 말을 한 것이라 생각됩니다.
21-
비슷한 맥락으로 단순히 고양이와 강아지를 구분하는 것과
22-
고양이와 강아지를 그릴 수 있는 것은 이해의 정도에
23-
큰 차이가 있다고 할 수 있습니다.
24-
우리가 지금까지 만든 딥러닝 모델들은 이미지를 구분 하는 정도에 그쳤지만
25-
이제 그림을 그리는 뉴럴넷을 만드는데 도전해보려고 합니다.
26-
27-
Generative Adversarial Networks,
28-
흔히 줄여서 GAN이라 부르고 이안 굿펠로우(Ian Goodfellow)가
29-
2014년 처음 제안한 이 방법론은 한국어로 직역하면
30-
'적대적 생성 신경망'입니다.
31-
왠지 더 어려워보이는 한국어 이름이지만
32-
한 단어씩 뜯어보면 그 의미를 알 수 있습니다.
33-
34-
먼저 GAN은 '생성'을 하는 모델입니다.
35-
기존에 배운 CNN이나 RNN으론 새로운 이미지나 음성을 만들어 낼 수 없었습니다.
36-
GAN은 새로운 이미지나 음성을 '창작'할 수 있도록 고안되었습니다.
37-
38-
두번째로 GAN은 '적대적'으로 학습합니다.
39-
adversarial 이라는 단어의 사전적인 의미는
40-
'서로 대립 관계에 있는', 혹은 '적대적인'입니다.
41-
이름이 암시하듯 GAN 방법론에선
42-
가짜 이미지를 생성하는 생성자(Generator)와
43-
이미지의 진위 여부를 판별하는 판별자(Discriminator)가
44-
연달아 학습을 하며 경쟁적으로 (적대적으로) 학습을 하게 됩니다.
45-
46-
판별자는 앞서 배운 신경망 모델들과 매우 비슷합니다.
47-
입력 x와 진위여부 y 사이의 관계를 학습하는 모델이라고 볼 수 있습니다.
48-
생성자는 진짜 데이터 x 가 어떻게 생겼는지를 배우는 모델입니다.
49-
정확하게는 입력의 분포를 배우게 됩니다.
50-
프로젝트 2에서는 한발 더 나아가 레이블 y가 주어졌을때
51-
진짜 데이터 x가 어떻게 생겼는지를 배우는 모델을 만들어
52-
직접 생성을 통제할 수 있도록 해보겠습니다.
53-
54-
마지막으로 GAN은 '신경망'입니다.
55-
Generator와 Discrinimator 모두 뉴럴넷으로 되어있습니다.
56-
57-
GAN을 한마디로 종합하자면 서로 대립하는
58-
두 모델의 경쟁을 통해 학습을 하는 방법론입니다.
59-
얀 르쿤 (Yann LeCun)은 이 아이디어를
60-
"근 20년간의 머신러닝 연구 중 가장 재밌는 아이디어"
61-
라고 했고 앤드류 응(Andrew Ng)을 비롯한 많은 연구자들도
62-
앞으로 딥러닝을 이끌 기술중 하나라고 진단하고 있습니다.
63-
이에 힘입어 GAN을 활용한 엄청난 수의 논문이 쏟아지고 있습니다.
64-
65-
GAN이 이토록 주목받고 미래지향적이라는 평가를 받는
66-
이유중 하나는 바로 비지도 학습을 한다는 것입니다.
67-
세상에 존재하는 데이터는 기하급수적으로 증가하는 중이고,
68-
대부분의 데이터는 정답(label)이 없습니다.
69-
그렇다고 사람이 모든 데이터를 일일이 가공하기엔 한계가 많습니다.
70-
GAN은 앞서 배운 오토인코더와 같이 비지도학습을 하여
71-
사람이 데이터에 주는 영향을 최소화 하며 학습을 할 수 있습니다.
72-
73-
앞서 나온 이유들과 더불어 GAN의 방법론은
74-
유연하여 무궁무진한 응용이 가능합니다.
75-
머신러닝으로 풀고자 하는 문제들 대부분에 GAN을 이용한 방법이
76-
시도되고 있으며 놀라운 성적을 내고 있습니다.
Original file line numberDiff line numberDiff line change
@@ -1,57 +1 @@
11
# 주어진 환경과 상호작용을 통해 성장하는 DQN
2-
3-
간단한 게임환경 안에서 스스로 성장하는 DQN 에이전트를 만들어봅니다.
4-
5-
* [개념] 강화학습과 DQN기초
6-
* [] OpenAI Gym
7-
* [프로젝트 1] 카트폴 게임 마스터하기
8-
* 더 보기
9-
10-
11-
## 강화학습과 DQN기초
12-
13-
사람은 스스로 성장합니다.
14-
선생님이 가르쳐 주는 지식도 중요하지만 자기주도적 학습을 하는 것도 중요합니다.
15-
기계학습에도 비슷한 영역이 있습니다.
16-
주어진 환경과 상호작용을 통해 가장 좋은 점수를 받는 쪽으로
17-
성장하는 머신러닝 분야를 "강화학습" 이라고 부릅니다.
18-
비유를 들자면 앞서 배웠던 학습 방법들이 우리가 원하는
19-
교재(데이터셋)를 외우게 하는 주입식 학습법이고 강화학습은
20-
자기주도적 학습법이라고 볼 수 있습니다.
21-
강화학습에서 사람은 목표를 설정해주고
22-
당근과 채찍을 이용해 성장시키는 코치입니다.
23-
24-
누가 가르쳐주지 않았는데도 우리는 각자 나름대로 뛰는법을 배웠습니다.
25-
처음 뛰었을때를 상상해보세요. 처음부터 숨을 어떻게 쉬고, 팔을 어떻게 흔들고,
26-
다리 근육을 어떻게 사용하는지 머릿속으로 일일이 생각을 하면
27-
오히려 부자연스러워 지기 마련입니다.
28-
일어섰다가 넘어지기를 반복하며 우리들은 시행착오를 통해 걷고 뛰는 법을 배웁니다.
29-
강화학습 에이전트도 주어진 환경안에서 여러가지의 시행착오를 통해 좋은 피드백을
30-
좋은쪽으로 최적화를 하는 것이 목표입니다.
31-
32-
![rl](./assets/rl.png)
33-
34-
강화학습은 크게 상태(State), 에이전트(Agent), 행동(Action), 보상(Reward)의
35-
4가지 요소로 나눌 수 있습니다.
36-
환경은 우리가 마스터하기 원하는 무대이고 시간에 따라 다른 상태를 제공합니다.
37-
에이전트는 인공지능 플레이어입니다.
38-
그리고 에이전트가 환경 안에서 여러가지 행동을 함에 따라
39-
나오는 피드백을 보상, 혹은 리워드라고 부릅니다.
40-
41-
42-
2013년 구글 딥마인드는 NIPS라는 학회에서
43-
"딥 강화학습을 이용하여 아타리 게임하기"
44-
(Playing Atari with Deep Reinforcement Learning)라는 논문을 냅니다.
45-
이 논문은 Deep Q-Network, 혹은 줄여 DQN이라고 부르는 알고리즘을 이용하여
46-
아타리사의 유명한 게임들에서 사람보다 월등한 성능을 내는 인공지능을 만들어 많은 주목을 받았습니다.
47-
사전에 주어진 정보 없이 화면과 조종키 몇개만 주어진 환경에서 기존 알고리즘들보다
48-
월등하게 좋은 성능을 내었고, 심지어 특정 게임에서는
49-
버그를 찾아 치사한 방법으로 이기는 모습도 보여주었습니다.
50-
딥마인드사는이 업적을 바탕으로 딥 강화학습이라는 연구 분야를 개척하고 구글에 인수가 됩니다.
51-
52-
53-
“얼마나 대단한 알고리즘이길래?” 라고 하실 수 있습니다.
54-
하지만 인공신경망과 비슷하게 코드로 담아보면 몇줄 안되는 것을 발견할 수 있습니다.
55-
56-
DQN은 갑자기 새롭게 튀어나온 아이디어라기 보다는 고전적인
57-
Q-Learning이라는 알고리즘에 뉴럴넷과 여러가지 테크닉을 접목한 결과입니다.

test/test_08.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import sys
2+
import os
3+
from importlib import import_module
4+
5+
6+
# setup path
7+
chapter_name = "08-딥러닝_해킹하기_Adversarial_Attack"
8+
dir_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), ".." , chapter_name)
9+
sys.path.append(dir_path)
10+
11+
12+
13+
def test_chapter_exmaples():
14+
mydir_tmp = os.path.join(dir_path) # add the testA folder name
15+
mydir_new = os.chdir(mydir_tmp) # change the current working directory
16+
mydir = os.getcwd() # set the main directory again, now it calls testA
17+
18+
chapter_examples = [
19+
# "text_classification",
20+
# "sequence_to_sequence",
21+
]
22+
23+
for example in chapter_examples:
24+
imported_package = import_module(example)
25+
26+
if __name__ == "__main__":
27+
test_chapter_exmaples()

0 commit comments

Comments
 (0)