모션 키포인트 검출 AI 경진대회

LeakyReLU와 BatchNormalization 사용 순서 관련하여

2021.03.02 11:40 5,927 조회

안녕하세요 딥러닝 갓 입문한 학생입니다.


얕은 배움에 의하면

BatchNormalization은 보통 Activation Func 사용 이전에  출력값 범위 조절을 위해 쌓는 것으로 알고 있었는데

베이스라인 코드나 몇몇 코드를 보니 LeakyReLU 이후에 사용하는 걸 보았습니다.


혹시 LeakyReLU만 이렇게 하는 것인지 아니면

Activation Func 이후에 사용하면 또 다른 이점이 있는 것인지 궁금합니다!

로그인이 필요합니다
0 / 1000
핑크퐁
2021.03.03 12:00

Activation Func 이전에 적용하는게 논리적으로 맞다고 생각합니다. 
예를 들어 ReLU(Non-linear Activation Func ) 같은 경우 1. Activation layer 이전에 Batch Normalization 을 적용 할 경우 -∞ ~ ∞ 의 값을 Normalization, 2. Activation layer 이후는 0~∞ 값을 Normalization 하게 되는데 2번의 경우 편향성이 생길 것으로 판단됩니다. 

핑크퐁
2021.03.03 18:04

다만 정설은 없는 것 같습니다.관련 자료를 찾아보니 대부분 Activation 이전에 사용하는 걸 권장하네요.
https://forums.fast.ai/t/why-perform-batch-norm-before-relu-and-not-after/81293
https://www.reddit.com/r/MachineLearning/comments/2x0bq8/some_questions_regarding_batch_normalization/?su=ynbwk&st=iprg6e3w&sh=88bcbe40

하르딘
2021.03.05 12:38

말씀해주신 부분을 응용해서 생각해보자면 Leaky ReLU 같은 경우는 그래도 음수 값이 어느 정도 남아 있으니
편향성이 덜 할 수 있어 Activation 이후에 사용하나 보군요.

공유해주신 URL 확인해보니 아직 논쟁이 있는 부분인가 보네요! 그러나 저는 권장사항처럼 이전에 사용하는 것으로 해야겠네요 ㅎㅎ

답변 감사드립니다 ㅎㅎ