tag:blogger.com,1999:blog-6029100972813152037.post2905117039191489941..comments2024-03-29T19:47:58.132+09:00Comments on Jaejun Yoo's Playground: 초짜 대학원생의 입장에서 이해하는 Domain-Adversarial Training of Neural Networks (DANN) (3)Jaejun Yoohttp://www.blogger.com/profile/10226095526284477166noreply@blogger.comBlogger9125tag:blogger.com,1999:blog-6029100972813152037.post-90860689487544196612020-05-21T13:59:05.817+09:002020-05-21T13:59:05.817+09:00최적화를 진행하는 과정에서 pred loss가 떨어지는 쪽으로의 학습이 진행이 되면 cla...최적화를 진행하는 과정에서 pred loss가 떨어지는 쪽으로의 학습이 진행이 되면 class를 잘 구분 하는쪽이라 서 이해가 되지만 <br /><br />dann_train_op 부분에서는 total loss가 작아지는 쪽으로 구성이 됩니다. total loss는 pred와 domin loss인데 여기서 domain loss가 작아진다는 의미는 domain을 잘 구분한다는 뜻이 아닌가요??<br /><br />또한 gradient reversal layer를 지나면서 점점 domain loss를 높이는 방법으로 업데이트가 진행된다는것으로 이해했는데 최적화를 진행할때 domain loss가 작아지는 방법으로 학습이 진행된다라는 부분에서 이해가 잘 되지 않습니다.<br />JHhttps://www.blogger.com/profile/09353577882743680644noreply@blogger.comtag:blogger.com,1999:blog-6029100972813152037.post-41352790135505052342018-02-14T16:00:32.667+09:002018-02-14T16:00:32.667+09:00pseudo-code에서 tmp부분이 어떻게 유도가 된 것인지 궁금합니다
Regulariz...pseudo-code에서 tmp부분이 어떻게 유도가 된 것인지 궁금합니다<br />Regularization을 어떤 것에 대해 미분한 것인가요?<br />(d와 u 각각에 대한 미분값까지는 이해했는데 tmp부분이 잘 이해가 안가네요ㅠㅠ)Anonymoushttps://www.blogger.com/profile/06811220689707939825noreply@blogger.comtag:blogger.com,1999:blog-6029100972813152037.post-72440912367339543332018-02-14T14:11:11.594+09:002018-02-14T14:11:11.594+09:00질문이 있습니다.
regularization을 해줄 때 왜 max(-loss) 형태로 정의...질문이 있습니다.<br />regularization을 해줄 때 왜 max(-loss) 형태로 정의했을까요?<br />regularization에 divergence를 반영해주고 싶은 것은 이해했는데<br />max(-loss) 형태로 왜 했을지가 궁금합니다Anonymoushttps://www.blogger.com/profile/06811220689707939825noreply@blogger.comtag:blogger.com,1999:blog-6029100972813152037.post-26243772134744180982017-05-01T13:28:42.422+09:002017-05-01T13:28:42.422+09:00답글 감사합니다 :)
먼저 D1에 대한 생각이 완전히 틀렸었군요!
DANN의 main p...답글 감사합니다 :)<br /><br />먼저 D1에 대한 생각이 완전히 틀렸었군요!<br />DANN의 main point가 domain independent한 feature를 생성한다는 점이 더 확실히 이해가 됩니다.<br /><br />다만, 답변에 DANN의 D2가 A, B를 제대로 구분하게 한다고 언급하셨는데, <br />max(E)를 하기 위해서는 R(W,B)를 maximize 해야 하는 거고, 이는<br /> 논문의 식(7) 아래 정의된 -L_d() 함수를 maximize하는 것과 같은데(이는 언급하신 것처럼 L_d()를 minimize하는 것과 같고요), -L_d() 함수가 maximize되기 위해서는 D_2가 A를 B로, B를 A로 "반대로" 구분해야 되는것 아닌가요? maximize니까 gradient reverse가 쓰이는 거고요.<br /><br />제가 말씀드리고 싶은건 "D2가 A,B를 제대로 구분하는데 gradient reverse때문에 반대로 되는게 아니라, D2가 A,B를 반대로 구분하는데 이를 위해선 maximize를 해야하고, 때문에 gradient reverse가 쓰일 수 밖에 없다." 이런 정리도 괜찮은가 입니다.<br /><br />마지막으로 일반 GAN의 Discriminator와 DANN의 D2와 다른점을 생각해 봤는데, GAN의 D는 G가 A를 B처럼 보이게 유도 하는거라면, DANN의 D2는 G가 A를 B처럼, B를 A처럼 보이게 유도 하는 것인데,, 일반 GAN과 다르게 "B를 A처럼" 부분이 추가 된 거잔아요?<br />이 부분이 왜 domain independent한 feature를 만드는지 직관적으로 와닫지 않네요. A를 B처럼 바꾸고도 classification이 잘 되고, B를 A처럼 바꿔도 classification이 잘 되게 유도하는 거니까.. A와 B의 중간점을 찾는걸까요? 이 부분의 재준님의 생각이 궁금합니다.<br /><br />쓰다보니 질문이 계속 생겨서.. 너무 두서 없이 써서 죄송합니다.<br /><br />항상 정말 감사합니다!Anonymoushttps://www.blogger.com/profile/05632845611254082820noreply@blogger.comtag:blogger.com,1999:blog-6029100972813152037.post-5278773437920658112017-04-29T18:40:43.582+09:002017-04-29T18:40:43.582+09:00앞서와 비슷한 답변을 드리게 되는데요. D1을 떼어내면 GAN과 형태가 같아진다고 볼 수 ...앞서와 비슷한 답변을 드리게 되는데요. D1을 떼어내면 GAN과 형태가 같아진다고 볼 수 있습니다. 그리고 DANN의 D도 A,B를 제대로 구분하게 합니다. Gradient reverse가 있기 때문에 G부분에 해당하는 feature extractor가 A,B를 잘 구별하지 못하게 하는(정확히는 A,B domain 차이에 independent한) feature를 찾는 방향으로 update되고 이게 결국엔 G가 D를 속이게 하는 것입니다. Jaejun Yoohttps://www.blogger.com/profile/10226095526284477166noreply@blogger.comtag:blogger.com,1999:blog-6029100972813152037.post-1965666711133896022017-04-29T18:36:45.175+09:002017-04-29T18:36:45.175+09:003번에서 D2가 해주는 일이 source(real)와 target(fake)를 구별하는 G...3번에서 D2가 해주는 일이 source(real)와 target(fake)를 구별하는 GAN의 역할입니다. 즉 D1을 떼어내면 오히려 GAN 형태가 되겠네요. 그렇기 떄문에 마지막에 말씀하신게 정확히 DANN이 해주고 있는 일입니다. GAN도 divergence를 minimize하는 것으로 식을 풀어낼 수 있어요. Jaejun Yoohttps://www.blogger.com/profile/10226095526284477166noreply@blogger.comtag:blogger.com,1999:blog-6029100972813152037.post-20282396284873385402017-04-29T18:32:52.667+09:002017-04-29T18:32:52.667+09:00안녕하세요 이준영님 댓글 감사합니다. 음..먼저 2번부터 얘기를 해야할 것 같네요. D1이...안녕하세요 이준영님 댓글 감사합니다. 음..먼저 2번부터 얘기를 해야할 것 같네요. D1이 해주는 일은 그냥 classification입니다. D1이 하는 일은 fake와 real을 잘 구분하게 학습하는 것이 아니죠. 그리고 generator라 하시면 용어가 좀 오히려 의미를 헷갈리게 할 수 있는데 DANN에서 앞단의 NN은 feature extractor 역할을 합니다. 즉 D2가 없다고 생각하시면 그냥 일반적인 CNN과 다를게 없습니다. D1에서 backprop하면 좀 더 classification을 잘하도록 feature extractor가 업데이트 되겠죠. Jaejun Yoohttps://www.blogger.com/profile/10226095526284477166noreply@blogger.comtag:blogger.com,1999:blog-6029100972813152037.post-82992933866049249462017-04-26T17:29:21.822+09:002017-04-26T17:29:21.822+09:00조금 더 추가하면, D2가 domain을 잘 구분하지 못하게 학습돼야 한다고 했는데, A를...조금 더 추가하면, D2가 domain을 잘 구분하지 못하게 학습돼야 한다고 했는데, A를 B로, B를 A로 classification하게 학습 시키는 것이 정말 구분하지 못하게 학습하는 건지.. 하는 궁금증도 드네요.<br />어떻게 보면 일반 GAN은 D가 A,B를 잘 구분하게 하고 G가 D를 속이게 하자(B처럼 보이게 하자)가 컨셉이라면 DANN은 D가 A,B를 반대로 구분하게 하고 G가 D를 속이게 하자(B처럼 보이게 하자)가 컨셉이 아닌가 하는 생각도 들고요. 생각 듣고 싶습니다.<br /><br />감사합니다. Anonymoushttps://www.blogger.com/profile/05632845611254082820noreply@blogger.comtag:blogger.com,1999:blog-6029100972813152037.post-5759565934552425862017-04-26T17:21:14.294+09:002017-04-26T17:21:14.294+09:00좋은 글 감사합니다. 항상 잘 읽고 있습니다.
이런식으로 이해하면 될까요?
At: dom...좋은 글 감사합니다. 항상 잘 읽고 있습니다.<br />이런식으로 이해하면 될까요?<br /><br />At: domain A 의 training data<br />Bt: domain B 의 training data<br /><br />1. DANN의 형태는 generator(G) 에 2개의 discriminator(D1, D2)가 달려있는 것<br />2. D1은 At의 classification 담당 (G는 A를 속일 수 있을 만큼 real한 data를 generate하게, D는 fake와 real을 잘 구분하게 학습 됨)<br />3. D2는 At와 Bt의 domain adaptation을 담당<br />3-1. D2는 At와 Bt의 H divergence를 최소화해야 함<br />3-2. 이를 위해 D2는 input의 domain을 잘 구분하지 못 하게(At가 들어오면 B로, Bt가 들어오면 A로 classification), G는 At가 들어오면 Bt처럼 보이는 아웃풋을 generate하게 학습 됨.<br /><br /><br />이 정리가 맞다면,<br />굳이 H-divergence를 쓰는 이유가 뭘까요? D2를 그냥 일반 GAN에서의 discriminator처럼 At 와 Bt의 도메인을 잘 구분할 수 있게 하는 network로 학습시켜도 3-2에서 마지막 결론인 "G는 At가 들어오면 Bt처럼 보이는 아웃풋을 generate하게 학습 됨."을 얻을 수 있지 않나요?Anonymoushttps://www.blogger.com/profile/05632845611254082820noreply@blogger.com