https://www.facebook.com/groups/DeepNetGroup/permalink/962998307426385/

 

Built by Stanford researchers: TunaGAN: Modify high-resolution face images with good qualitative and quantitative performance.

https://www.profillic.com/paper/arxiv:1908.06163

Posted by uniqueone
,

https://www.facebook.com/groups/1738168866424224/permalink/2414086682165769/

 

Precisely estimating a robot’s pose in a prior, global map is a challenge in unstructured, dynamic environments.

https://www.profillic.com/paper/arxiv:1909.12837

Solution: SegMap: a map representation solution for localization and mapping

Posted by uniqueone
,

https://www.facebook.com/groups/726202694419379/permalink/909151656124481/

 

Adam을 개선한 RAdam의 배경과 실행방법

- 딥러닝 과학기술 그룹

 

'그래서 결론은, 아담(Adam)' 이라며 옵티마이저 수업을 끝내도 무리가 없었을 만큼,

아담은 고급 경사하강법들 중 대표주자 격이었습니다. 그런데, 몇주 전 아담을 개선한 RAdam(Rectified Adam)이 나왔고 이게 더 좋다며 들썩이고 있습니다. 가장 좋은 것이 개선되어 새로 나왔으니 새로운 대표주자의 탄생일까요?

 

옵티마이저는 SGD, 모멘텀, 알엠에스프롭 등의 순서로 발표되었는데 나중에 발표될 수록 앞서 나온것을 참조하게되므로 나중 것이 예전 것보다 성능이 개선되는 경향이 있습니다. 따라서 RAdam을 이해하기 위해서는 먼저 그동안 나온 옵티마이저들의 흐름을 파악해 보는 것이 좋습니다. 옵티마이저의 개선 방향과 그 끝에 나온 RAdam에 관하여 간단히 정리해 보았습니다.

 

1. 경사하강법을 개선한 SGD

딥러닝을 배울 때 반드시 배우게 되는 것이 경사 하강법(Gradient Decent, GD)입니다. 미분을 이용해 가중치를 업데이트 하는 것이지요. 그런데 경사 하강법은 한번 업데이트 할 때 마다 전체 데이터를 미분해야 하므로 계산량이 매우 많았습니다. 이러한 점을 보완하기 위해 전체 데이터가 아닌, 랜덤하게 추출한 일부만을 사용하는 확률적 경사 하강법(Stochastic GD, SGD)이 나왔습니다. SGD가 기존의 GD를 대체해 감과 동시에, 이처럼 기존의 방법을 개선한 '고급 경사하강법'들이 연이어 소개되기 시작합니다.

 

2. 관성과 방향을 고려한 모멘텀

미분을 통해 기울기를 구하는 건 같지만, 오차 수정전 바로 앞 수정값과 방향(+,-)를 참고하여 같은 방향으로 일정한 비율만 수정되게 하는 방법이 모멘텀(Momentum)입니다. 이 아이디어로 인해 양의 방향과 음의 방향으로 지그재그가 크게 반복되며 수정 되는 현상이 개선되었고 이전 이동값을 고려하여 일정 비율 만큼만 다음값을 결정하므로 관성의 효과를 낼 수 있었습니다.

 

3. 모멘텀을 개선한 네스테로프 모멘텀

모멘텀이 이동시킬 방향을 정하면, 그 방향으로 미리 이동해서 기울기를 계산, 불필요한 계산량을 줄이고 정확도를 향상시키는 방법이 제안 되었습니다. 네스테로프 모멘텀(Nesterov momentum)이라고 불리우는 고급 경사 하강법입니다.

 

4. 보폭의 크기를 개선한 아다그라드와 아다그라드를 개선한 알엠에스프롭

이어서 변수의 업데이트가 잦으면 학습률을 적게 하여 이동 보폭을 조절하는 아이디어를 담은 아다그라드(Adagrad)가 소개되었고, 이 아다그라드의 보폭 민감도를 보완한 알엠에스프롭(RMSprop)이 등장했습니다.

 

6. 모멘텀과 알엠에스 프롭의 장점을 합친 아담

아담은 모멘텀을 사용해 정확도를 향상시키고 알엠에스프롭를 이용해 보폭 민감도를 보완한 방법입니다. '결론은 아담'이었던 이유는 아담이 그동안 나온 고급 경사하강법들의 장점을 모아 만들어 졌기 때문입니다.

 

7. 그 아담을 개선한 RAdam

드디어 RAdam의 등장입니다. 일리노이즈 대학, 조지아텍 그리고 마이크로소프트에 소속된 멤버들이 아담을 연구하던 중, 초기에 낮은 학습률로 warmup을 해주거나, 모멘텀을 잠시 꺼주면 아담의 성능이 향상되는 이유를 조사했습니다. 이를 정리해 발표한 논문 (참고자료 2)에 등장한 것이 RAdam입니다.

 

[RAdam의 실행]

케라스를 사용하는 경우, 다음과 같이 자신의 프로젝트에 적용할 수 있습니다.

 

1. pip install keras-rectified-adam 로 인스톨 후,

2. from keras_radam import RAdam 로 불러와서,

3. model.compile(RAdam(), loss="sparse_categorical_crossentropy", metrics=["accuracy"]) 이런식으로 컴파일 할때 옵티마이저 부분을 대체해 줍니다.

 

파이토치로 만들어진 공식 깃헙은 아래 주소입니다.
https://github.com/LiyuanLucasLiu/RAdam

 

아래 참고자료(3)은 RAdam의 원리에 대한 간단한 소개 및 Adam과의 결과를 비교하는 것을 보여줍니다. (수정/추가) 여기 실린 두개의 결과 그림을 가져와 첨부했었는데, RAdam의 loss가 Adam보다 더 낮지 않은 예시였고, 여러 데이터 집합의 결과를 검토해 한번 더 올리겠다고 예고된 바, RAdam 논문에 실린 그림으로 대체하였습니다.

 

 

참고 자료

1. 모두의 딥러닝, 길벗 (pp 116~119, "속도와 정확도 문제를 해결하는 고급 경사 하강법"편)

2. Liu, Liyuan, et al. "On the variance of the adaptive learning rate and beyond." arXiv preprint arXiv:1908.03265 (2019). https://arxiv.org/pdf/1908.03265.pdf

3. "Rectified Adam (RAdam) optimizer with Keras" https://www.pyimagesearch.com/2019/09/30/rectified-adam-radam-optimizer-with-keras/

 

Posted by uniqueone
,

https://www.facebook.com/groups/DeepAI/permalink/2280373625587435/

 

Great applications for the fashion industry-

Poly-GAN: Garments are automatically placed on images of human models at an arbitrary pose

https://www.profillic.com/paper/arxiv:1909.02165

Posted by uniqueone
,