borch

튜토리얼 · 5

적대적 예제

기울기는 물어본 것에 대해 답한다. 가중치 말고 입력에 대해 물으면, 사람 눈에는 그대로인 채로 답만 바뀔 만큼 이미지를 밀어낼 수 있다. FGSM 은 그게 전부이고 여섯 줄이다.

CIFAR 부분집합이 필요하다. python3 site/fetch_data.py 를 한 번 돌린다 — 튜토리얼 4 와 같은 데이터다. 이 페이지는 첫 블록에서 그 모델을 직접 학습시킨다(몇 초). 다른 페이지의 상태에 기대는 페이지는 직접 열자마자 깨진다.

1 · 그림에 대한 기울기

지금까지는 파라미터에 기울기를 표시했다. 대신 입력에 표시하면 backward()x.grad 를 채운다 — 픽셀마다 하나씩, 손실을 더 나쁘게 만들려면 어느 쪽으로 밀어야 하는지.

2 · 부호 방향으로 한 걸음

FGSM 은 픽셀별 기울기의 방향만 남기고 ε 만큼 간다. ε 이 작으면 눈에 안 보이고, 질문은 얼마나 작아도 답이 뒤집히느냐다.

3 · 무엇이 바뀌었는지 보기

세 줄: 원본, 밀어낸 것, 그리고 보이도록 키운 차이. 가운데 줄이 당신 눈에 윗줄과 같아 보이는데 모델이 다르게 말한다면, 그것이 이 연습의 요점이다.

재주 너머의 의미. 이 공격은 학습 데이터에 접근할 필요도, 탐색도 없다 — 갖고 있는 모델에 역방향 한 번이다. 그리고 전부 읽는 사람의 브라우저에서 돈다. 입력에 대한 기울기는 가중치에 대한 기울기와 같은 호출이고, borch 는 그 둘을 다르게 다루지 않는다.