고급 딥 러닝 [8]: 신경망에 대한 GAN의 기본 개념 소개, Nash Equilibrium, Generator Discriminator, Decoding Encoder 상세 설명 및 GAN 애플리케이션 시나리오

여기에 이미지 설명 삽입
[고급 딥 러닝 소개] 활성화 함수, 최적화 전략, 손실 함수, 모델 튜닝, 정규화 알고리즘, 컨볼루션 모델, 시퀀스 모델, 사전 학습 모델, 적대적 신경망 등을 포함한 필견 시리즈

여기에 이미지 설명 삽입
칼럼에서는 활성화 함수, 최적화 전략, 손실 함수, 모델 튜닝, 정규화 알고리즘, 컨볼루션 모델, 시퀀스 모델, 사전 훈련 모델, 적대적 신경망 등을 포함한 [고급 딥 러닝 소개] 꼭 봐야 할 시리즈를 소개합니다. .

이 칼럼은 주로 초보자가 관련 지식을 빠르게 파악할 수 있도록 돕기 위한 것입니다. 후속작에서는 딥러닝에 관련된 지식 원리를 모든 사람에게 계속 분석하여 그것이 무엇인지, 왜 그런지, 왜 그런지 알고 프로젝트를 실습하면서 모두가 지식을 예약할 수 있도록 할 것입니다.

면책 조항: 일부 프로젝트는 모든 사람이 빠르게 배울 수 있는 온라인 클래식 프로젝트이며 향후 실용적인 링크가 추가될 예정입니다(대회, 논문, 실제 응용 프로그램 등).

컬럼 구독: 고급 컬럼에 대한 딥 러닝 소개

신경망에 대한 GAN의 기본 개념 소개: 생성적 적대 신경망

1. 게임이론

게임 이론은 둘 이상의 합리적 에이전트 또는 플레이어 간의 상호 작용 모델 로 생각할 수 있습니다 .

Rational 은 게임 이론의 기초이기 때문에 키워드입니다. 우리는 단순히 합리성을 각 에이전트가 다른 모든 에이전트가 자신만큼 합리적이고 동일한 수준의 이해와 지식을 소유하고 있다는 것을 알고 있다는 이해로 언급할 수 있습니다 . 한편, 합리성은 에이전트가 다른 에이전트의 행동을 고려할 때 항상 더 높은 보상/보상을 선호한다는 사실을 말합니다.

합리적이라는 것이 무엇을 의미하는지 알았으니 이제 게임 이론과 관련된 몇 가지 다른 키워드를 살펴보겠습니다.

  • 게임 : 일반적으로 게임은 일련의 플레이어, 행동/전략 및 궁극적인 보상으로 구성됩니다. 예: 경매, 체스, 정치 등

  • 플레이어 : 플레이어는 모든 게임에 참여하는 합리적인 존재입니다. 예: 경매 입찰자, 가위바위보 선수, 선거에 참여하는 정치인 등

  • 보수 : 보수는 모든 플레이어가 특정 결과를 달성했을 때 받는 보상입니다. 긍정적일 수도 있고 부정적일 수도 있습니다. 이전에 논의한 것처럼 각 에이전트는 이기적이며 보상을 최대화하려고 합니다.

2. 내쉬 균형

내쉬 평형(또는 내쉬 평형), 비협동적 게임 평형으로도 알려진 내쉬 평형은 인공 지능 게임 이론 방법의 "초석"입니다.

소위 내쉬균형은 참가자들의 전략 조합을 말하며, 이 전략에서 참가자는 혼자 전략을 변경하는 것으로는 이익을 얻지 못할 것 입니다 . 다시 말해 전략 포트폴리오는 아무도 자신의 전략을 바꾸지 않을 때 아무도 자신의 전략을 바꾸지 않는다면 내쉬 균형입니다.

고전적인 예는 죄수의 딜레마 입니다 .

**배경:** 한 사건의 피의자 A와 B 2명은 따로 경찰 조사를 받았기 때문에 A와 B가 공모할 기회가 없었다.

**포상 및 처벌:** 경찰관은 A와 B에게 각각 3년, 둘 다 자백하면 5년, 상대방은 10년을 각각 선고했다. .

**결과: ** A와 B 모두 자백을 선택하여 각각 5년형을 선고받게 되는데, 이것이 이때의 내쉬균형이다.

상벌에 대한 설명으로 미루어 볼 때 자백하지 않는 것이 최선책이며 형량은 가장 적다. A와 B는 의사소통이 불가능하므로 각자의 이해관계에 따라

용의자 생각:

  • B가 자백하면 내가 자백하면 5년형, 자백하지 않으면 10년형,

  • B가 자백하지 않으면 내가 자백하면 1년, 자백하지 않으면 3년,

따라서 B가 자백을 하든 안 하든 A가 자백을 하면 A에게 최적의 전략이다.

위와 같이 피의자 B도 같은 생각을 가지고 있고, 모두 각자의 합리성에 따라 자백을 선택하는데, 이러한 상황을 내쉬 균형점이라고 합니다.

3. GAN 생성기의 입력에 노이즈가 발생하는 이유

GAN 생성기 생성기의 입력은 랜덤 노이즈이며 매번 다른 그림을 생성하는 것이 목적입니다. 그러나 완전히 임의적인 경우 생성된 이미지에 어떤 기능이 있는지 알 수 없으며 결과를 제어할 수 없으므로 노이즈는 일반적으로 이전 임의 분포에서 생성됩니다. 일반적으로 사용되는 무작위 분포:

  • Gaussian distribution : 연속변수 중에서 가장 널리 사용되는 확률분포.

  • 균일 분포 : 연속 변수 x의 단순 분포.

임의의 노이즈를 도입하면 생성된 사진이 다양해집니다. 예를 들어 다음 그림에서 다른 노이즈 z는 다른 숫자를 생성할 수 있습니다.

4. 발전기

생성기 G는 그림을 생성하는 네트워크로 다층 퍼셉트론, 컨볼루션 네트워크, 오토인코더 등을 사용할 수 있습니다. 랜덤 노이즈 z를 수신하고 이 노이즈를 통해 G(z)로 표시되는 그림을 생성합니다. 생성기가 아래 그림의 모델 구조를 통해 단계별로 잡음으로부터 그림을 생성하는 방법을 설명하십시오.

1) 입력: 100차원 벡터;

2) 2개의 완전 연결 레이어 Fc1 및 Fc2와 하나의 크기 조정 후 노이즈 벡터가 증폭되어 7*7 크기의 128개 특징 맵을 얻습니다.

3) 업샘플링을 수행하여 특징 맵을 확장하여 14*14 크기의 128개의 특징 맵을 얻습니다.

4) 첫 번째 컨벌루션 Conv1 이후, 14*14의 64개의 특징 맵이 얻어집니다.

5) 업샘플링을 수행하여 특징 맵을 확장하여 28*28 크기의 64개의 특징 맵을 얻습니다.

6) 2차 컨볼루션 Conv2 이후 입력 노이즈 Z를 점차적으로 1 28 28 의 단일 채널 이미지 출력으로 변환하여 생성된 필기 숫자를 얻는다.

팁: 완전 연결 레이어의 기능: 차원 변환, 고차원화, 노이즈 벡터 증폭에 편리합니다. 완전 연결 계층의 계산이 약간 더 크기 때문에 후속 개선된 GAN은 완전 연결 계층을 제거합니다.

팁: 마지막 레이어의 활성화 함수는 일반적으로 tanh()를 사용합니다. 활성화 및 정규화 역할을 모두 수행하고 생성기의 출력을 판별기의 입력으로 [-1,1]로 정규화합니다. 또한 GAN의 훈련을 보다 안정적으로 만들고 수렴 속도가 빨라지며 생성 품질이 실제로 더 높아집니다.

5. 판별기 판별기

판별기(D)의 입력은 실영상과 제너레이터에서 생성된 영상이며, 그 목적은 생성된 영상과 실제 영상을 최대한 구별하는 것이다. 이진 분류 문제에 속하며, 다음 그림의 모델 구조를 통해 discriminator가 참과 거짓 그림을 어떻게 구별하는지 설명하십시오.

  • 입력: 28*28 픽셀 크기의 단일 채널 이미지(고정 값이 아님, 실제 상황에 따라 수정 가능).

  • 출력: 이진 분류, 샘플은 참 또는 거짓입니다.

1) 입력: 28 28 1-픽셀 이미지;

2) 첫 번째 컨볼루션 conv1 후, 26 26의 64개의 특징 맵을 얻은 다음 최대 풀링 풀1을 수행하여 13 13의 64개의 특징 맵을 얻습니다.

3) 두 번째 컨볼루션 conv2 이후, 11 11의 128개의 특징 맵을 얻은 다음 최대 풀링 풀 2를 수행하여 5 5의 128개의 특징 맵을 얻습니다.

4) 크기 조정을 통해 다차원 입력을 치수화합니다.

5) 두 개의 완전히 연결된 레이어 fc1 및 fc2 후에 원본 이미지의 벡터 표현을 얻습니다.

6) 마지막으로 Sigmoid 활성화 함수를 통해 판별 확률, 즉 사진이 진짜인지 가짜인지에 대한 이진 분류 결과가 출력된다.

6. GAN 손실 함수

학습 과정에서 Generator G(Generator)의 목표는 Discriminator D(Discriminator)를 속이기 위해 최대한 실제 그림을 생성하는 것입니다. D의 목표는 G에서 생성된 사진을 실제 사진과 최대한 구별하는 것입니다. 이러한 방식으로 G와 D는 동적인 "게임 프로세스"를 구성합니다.

결승전 결과는? 가장 이상적인 상태에서 G는 "진짜를 위장"하기에 충분한 그림 G(z)를 생성할 수 있습니다. D의 경우 G에서 생성된 사진이 실제인지 여부를 판단하기 어렵기 때문에 D(G(z)) = 0.5입니다.

공식은 다음과 같습니다.

min G max DV ( D , G ) = E x ∼ pdata ( x ) [ log ⁡ D ( x ) ] + E z ∼ pz (z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] (1 ) \begin{방정식} \mathop{min}\limits_{G}\mathop{max}\limits_{D}V(D,G) = Ε_{x\sim p_{데이터}(x)} \left[\ log D\left(x\right)\right]+Ε_{z\sim p_{z}(z)}\left[\log \left(1 - D\left(G\left(z\right)\right )\right)\right]\end{방정식} \tag{1}G 엑스브이 ( ,)=이자형x ~ p다따 _ _ _( 엑스 )[ 로그 _( 엑스 ) ]+이자형z ~ p( z )[ 로그 _( 1-( ( z ) ) )]( 1 )

수식 왼쪽의 V(D,G)는 생성된 이미지와 실제 이미지의 차이를 나타내며 이진 분류(true 및 false 범주)의 교차 엔트로피 손실 함수를 사용합니다. minG 및 maxD 두 부분 포함:

최대 DV ( D , G ) \mathop{max}\limits_{D}V(D,G) 엑스브이 ( ,G )는 고정 생성기 G가 판별기 D를 학습시키고 판별기 D의 매개변수가 교차 엔트로피 손실 V(D,G)를 최대화하여 업데이트됨을 의미합니다. D의 훈련 목표는 실제 사진 x와 생성된 사진 G(z)를 정확하게 구별하는 것으로, D의 식별 능력이 강할수록 D(x)가 커야 하며, 오른쪽 첫 번째 항목이 커야 하며, D(G(x))가 작을수록 . 오른쪽에서 두 번째 항이 더 커야 합니다. 이때 V(D,G)가 커지므로 공식은 D의 최대값(maxD)을 찾는 것이다.

최소 G 최대 DV ( D , G ) \mathop{min}\limits_{G}\mathop{max}\limits_{D}V(D,G)G 엑스브이 ( ,G )는 고정된 판별기 D가 생성기 G를 훈련시키고, 판별기가 참 이미지와 거짓 이미지의 교차 엔트로피 손실 V(D,G)를 최대화할 때 생성기는 교차 엔트로피 손실을 최소화해야 함을 의미합니다. 이때 오른쪽 두 번째 항목만 유용하다. 이때 V(D, G)는 작아지게 됩니다. 따라서 공식은 G의 최소값(min_G)입니다.

  • x ∼ pdata ( x ) x\sim p_{데이터}(x)엑스~다따 _ _ _( x ) : 실제 이미지를 나타냅니다.

  • z ∼ pz ( z ) z\sim p_{z}(z)~( z ) : 가우스 분포의 샘플, 즉 노이즈를 나타냅니다.

  • D(x)는 x가 실제 사진일 확률을 나타내며, 1이면 100% 실제 사진이고 출력이 0이면 실제 사진이 아닐 수 있음을 의미한다.

방정식의 오른쪽은 실제로 방정식의 왼쪽에 있는 교차 몫 손실 공식을 확장하여 확률 분포의 예상 형식으로 작성하는 것입니다. 자세한 유도는 Generative Adversarial Nets 원본 문서를 참조하십시오 .

7. 모델 교육

GAN에는 생성기 G와 판별기 D의 두 네트워크가 포함되어 있는데 어떻게 두 네트워크를 훈련시킬까요?

학습하는 동안 판별자 D는 먼저 실제 사진을 실제 레이블 1로, 생성기 G에서 생성한 가짜 그림을 가짜 레이블 0으로 레이블 지정하고 함께 배치를 형성하여 판별자 D로 전송하여 판별자를 훈련하도록 훈련합니다. . 손실을 계산할 때 입력된 실제 이미지에 대한 판별자의 판단은 참인 경향이 있고, 생성된 가짜 이미지의 판단은 거짓인 경향이 있다. 이 과정에서 Discriminator의 매개변수만 업데이트되고 Generator의 매개변수는 업데이트되지 않습니다.

그런 다음 생성기 G를 훈련시켜 가우시안 분포의 노이즈 z를 생성기 G로 보내고 생성된 가짜 사진에 실제 레이블 1을 지정하여 판별기 D로 보냅니다. 손실을 계산할 때, 생성된 가짜 사진에 대한 판별자의 차별이 사실인 경향이 있습니다. 이 과정에서 제너레이터의 파라미터만 업데이트되고 판별자의 파라미터는 업데이트되지 않습니다.

참고: 교육 초기에 G가 제대로 생성되지 않으면 D는 생성된 샘플이 교육 데이터와 크게 다르기 때문에 높은 신뢰도를 가지고 거부합니다. 따라서 log(1−D(G(z)))는 포화됩니다(즉, 일정하고 기울기는 0임). 따라서 우리는 log(1−D(G(z)))를 최소화하는 대신 logD(G(z))를 최대화하여 G를 훈련시키고 이를 홍보(1)의 오른쪽에 있는 두 번째 항목과 비교합니다.

8 모델 훈련이 불안정하다

GAN 학습이 불안정한 이유는 다음과 같습니다.

  • 수렴 없음: 두 모델 G와 D를 동시에 수렴시키는 것은 어렵습니다.

  • 패턴 축소: Generator G는 단일 또는 유한 패턴을 생성합니다.

  • 느린 훈련: 생성기 G의 기울기가 사라집니다.

GAN을 교육할 때 다음 교육 기술을 채택할 수 있습니다.

1) 생성기 마지막 계층의 활성화 함수는 tanh()를 사용하고 출력은 [-1, 1]로 정규화됩니다.

2) 실제 이미지도 [-1,1]로 정규화됩니다.

3) 학습 속도를 너무 크게 설정하지 마십시오. 초기 1e-4를 기준으로 사용할 수 있으며 학습이 진행됨에 따라 학습 속도를 지속적으로 줄일 수 있습니다.

4) SGD는 최소값을 찾는 문제를 해결하고 GAN은 게임 문제이며 SGD를 사용할 때 진동하기 쉽기 때문에 옵티마이저는 Adam을 선택하려고 합니다.

5) ReLU 및 MaxPool을 사용하여 희박한 기울기의 가능성을 줄이십시오.Leak ReLU 활성화 기능을 사용할 수 있습니다.다운 샘플링은 Average Pooling 또는 Convolution + stride로 대체할 수 있습니다. 업샘플링은 PixelShuffle, ConvTranspose2d + 보폭을 사용할 수 있습니다.

6) 노이즈 추가: 실제 이미지와 생성된 이미지에 노이즈를 추가하면 판별기 훈련의 난이도가 높아져 안정성 향상에 도움이 됩니다.

7) 레이블이 지정된 데이터가 있으면 훈련에 레이블 정보를 사용하십시오.

8) 레이블 스무딩: 실제 이미지의 레이블이 1로 설정되면 판별자가 분류에 너무 확신하지 않도록 0.9와 같이 더 낮은 값으로 변경합니다.

9. 인코더 인코더

Encoder의 목표는 입력 시퀀스를 저차원 벡터 표현 또는 임베딩으로 인코딩하는 것입니다.매핑 기능은 다음과 같습니다.

V → R d (1) \begin{방정식}V\to R^{d}\end{방정식} \tag{1}V아르 자형( 1 )

입력 V는 임베딩 zi ∈ R d z_i\in R^{d} 에 매핑됩니다.아르 자형d , 아래 그림과 같이:

Encoder는 일반적으로 convolutional layer, pooling layer, BatchNormalization layer로 구성된 Convolutional Neural Network이다. 컨벌루션 레이어는 이미지의 로컬 특징을 획득하는 역할을 하고, 풀링 레이어는 이미지를 다운 샘플링하여 스케일 불변 특징을 다음 레이어로 전달하며, BN은 주로 학습을 가속화하기 위해 훈련 이미지의 분포를 정규화합니다. (인코더 네트워크 구조는 컨볼루션 신경망에 국한되지 않음)

얼굴 인코딩을 예로 들면 Encoder는 얼굴 이미지를 짧은 벡터로 압축하여 짧은 벡터가 얼굴 이미지의 주요 정보를 포함하도록 합니다. 눈썹의 위치, 눈의 크기 등. 인코더는 다양한 얼굴을 학습한 다음 얼굴의 공통점을 학습할 수 있습니다.

10. 디코더 디코더

디코더의 목표는 엔코더의 임베딩 출력을 사용하여 그래프에 대한 구조적 정보를 디코딩하는 것입니다.

입력은 노드 쌍의 임베딩이고 출력은 노드에 있는 두 노드의 유사도를 측정하는 실수입니다.매핑 관계는 다음과 같습니다.

Rd ∗ Rd → R + . (1) \begin{방정식}R^{d} * R^{d}\to R^{+}\end{방정식}. \태그{1}아르 자형아르 자형아르 자형+..( 1 )

Decoder는 축소된 특징 이미지 벡터를 업샘플링한 다음 업샘플링된 이미지에 대해 컨볼루션 처리를 수행하는데 목적은 객체의 기하학을 개선하고 Encoder의 풀링 레이어에 의한 객체 축소로 인한 디테일 손실을 보상하는 것입니다. .

얼굴 인코딩 및 디코딩을 예로 들면 인코더가 얼굴을 인코딩한 후 디코더를 사용하여 얼굴의 특성을 학습합니다. 즉, 다음 그림과 같이 짧은 벡터가 얼굴 이미지로 복원됩니다.

11. 간 애플리케이션

GAN의 몇 가지 흥미로운 응용 프로그램을 살펴보겠습니다.

  • 이미지 생성

    이미지 생성은 생성 모델의 기본 문제이며 GAN은 이전 생성 모델보다 더 높은 이미지 품질의 이미지를 생성할 수 있습니다. 사실적인 얼굴 이미지 생성과 같은

  • 슈퍼 해상도

    이미지를 확대하면 사진이 흐려집니다. GAN을 사용하여 32*32 이미지를 64*64 실제 이미지로 확장하고 이미지를 확대하면서 이미지의 해상도를 높입니다.

  • 이미지 복원

    불완전한 이미지를 완성하고 문신, TV 로고, 워터마크 등을 제거하는 데에도 사용할 수 있습니다.

  • 이미지를 이미지로 변환

    하나의 이미지를 기반으로 다른 스타일로 다른 이미지를 생성합니다. 예를 들어, 말은 얼룩말 지도가 되고 항공 지도는 지도가 됩니다.

  • 풍경 애니메이션

    풍경 이미지를 애니메이션 효과로 변환

  • 코믹한 얼굴

    만화 스타일의 얼굴 이미지 생성

  • 이미지 채색

    흑백 이미지 색상화

  • 텍스트를 이미지로

    텍스트 설명을 기반으로 해당 이미지 생성

GAN의 적용은 위에서 언급한 것보다 훨씬 더 널리 사용됩니다.

추천

출처blog.csdn.net/sinat_39620217/article/details/130982812