인프런 커뮤니티 질문&답변

vecum0814님의 프로필 이미지
vecum0814

작성한 질문수

딥러닝 CNN 완벽 가이드 - Fundamental 편

활성화 함수(Activation Function)의 이해

활성화 함수에 대한 전반적인 질문 드립니다.

작성

·

596

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
권철민 선생님 안녕하세요, 딥러닝 cnn 완벽 기초 강의를 모두 수강 하고 복습을 하던 중에, 활성화 함수의 전반적인 개념, 특히 ReLu 함수에 대해 질문이 있습니다.
 
우선 활성화 함수가 필요한 이유는 모델의 복잡도를 올리기 위해서라고 이해했습니다. 단순 퍼셉트론에서 XOR 문제를 해결할 수 없었던 문제를 해결하기 위해 MLP가 등장했고, 여기에서 step function이 활성화 함수로 사용되어 이전 층의 결과값을 함수에 집어 넣어 다음 층으로 전달하는 역할을 맡게 되었습니다.
 
하지만 MLP를 넘어 더 많은 히든 레이어를 쌓아 올리는 DNN의 경우, 선형 함수의 특성상 이를 여러번 겹쳐서 쌓아 올려도 결국에는 하나의 선형 함수로 표현할 수 있기 때문에 복잡도를 올리기 위해 레이어를 더 쌓는 의미가 없다고 이해했습니다.(물론 이렇게 쌓을 경우 레이어마다 가중치가 생기기 때문에 아예 의미가 없다고는 할 수 없겠으나, 모델 자체의 복잡도를 올리기 위한 목적에는 부합하지 않는다고 생각하고 있습니다). 단순한 퍼셉트론을 넘어 다층 퍼셉트론에서는 기존의 단층 퍼셉트론만을 활용했을 때는 풀 수 없었던 복잡도의 문제 해결이 가능해졌지만, 동일한 방법으로는 아무리 레이어를 쌓아도 더욱 복잡한 문제는 풀 수 없었습니다.
 
때문에, 더욱 복잡한 문제를 풀기 위해서 모델의 복잡도를 올리기 위해서는 선형 활성화 함수를 여러개 사용하여 쌓아도 결국 하나의 레이어를 사용하여 나타낼 수 있는 상황을 막아야 하기 때문에 이와 반대로 비선형 활성화 함수를 사용한다고 이해하고 있습니다.
 
비선형 활성화 함수들의 예시로 시그모이드, 하이퍼볼릭 탄젠트와 같이 shape 자체가 비선형인 함수들이 각광받았는데, 작은 미분값으로 인해 깊은 네트워크로 갈수록 역전파 과정에서 발생하는 Gradient Vanishing 문제, 그리고 양극단으로 값이 모일수록 명확성이 떨어진다는 단점때문에 히든 레이어의 활성화 함수로는 더는 차용되지 않는다고 이해하고 있습니다.
 
이러한 기울기 소실 문제를 해결하기 위해 대부분의 은닉층에서는 활성화 함수로 ReLu함수를 사용한다고 이해하고 있는데요, 렐루 함수일 경우 ReLu(-1) + ReLu(1) != ReLu(-1 + 1)이기 때문에 비선형 함수이지만, (음의 무한대, 0] 그리고 [0, 양의 무한대) 구간에서는 선형이라고 알고 있습니다. 이를 고려한다면 ReLu 함수는 비록 전체 구간에서는 비선형 함수이지만, 대부분의 구간에서는 선형 함수인데 이러한 부분을 고려할 때 어떻게 ReLu 함수를 사용할 때 저희가 시그모이드와 같은 함수에서 기대하는 것과 같은 비선형적인 특성으로 모델의 복잡도를 올려줄 수 있는것인지 직관적으로 잘 와닿지가 않습니다.
 
또한, CNN 연산 적용 후 ReLu 함수를 적용하는 부분이 궁금합니다. 이미지의 특정 영역에 filter값을 곱해서 특정을 추출하는 feature extracting 과정에서 합성곱 연산의 값이 크게 나올수록 이미지의 해당 영역이 해당 필터가 추출하고자 하는 값(가로, 세로, 커브 모양 등등)을 강하게 나타내고 있다고 이해하였는데요, 그렇다면 이렇게 추출되서 생성된 새로운 feature map에 ReLu 함수를 적용하는 이유는 모델의 복잡도를 올리기 위해 비선형적인 함수를 추가하는것 뿐만 아니라 예를 들어서 가로 선을 추출하기 위한 필터를 통과했을 경우, 값이 커서 가로에 해당할 확률이 높은 부분은 그대로 유지하되, 음수로 결과가 나와 가로의 특성과는 전혀 맞지 않는 특성을 모두 0으로 만들어서 가로 특징이 없다고 정리하는 역할 또한 존재할까요? 혹시 제가 놓친 ReLu 함수를 CNN의 활성화 함수로 쓰는 이유가 있다면 지적 부탁드립니다. 이미지의 픽셀은 0~255의 값으로 구성된다고 알고 있는데 음수일 경우도 존재할까요? 만약 합성곱 연산의 결과로 음수값이 나왔다면 어떻게 해석하는지 궁금하고 또 이럴 경우 filter의 weight가 음수로 크게 설정되어 있어서 발생하는 경우인지도 궁금합니다.
 
그리고 CNN 모델의 진행 과정에서, 입력층과 가까운 Conv layer일수록 이미지의 edge, textile같은 low level 특징을 추출하는 것에서 출력층과 가까울수록 더욱 더 추출된 특징들을 일반화 시킨다고 이해했는데 제가 맞게 이해했을까요? 마지막으로 그렇다면 이때 각 filter마다 이미지 안에 가로, 세로, 혹은 다양한 모양들의 곡선적인 특징들이 존재하는지에 대해 추출하는 역할을 담당하게 될것이라고 예상되는데, 이렇게 필터마다 작업이 할당되는 자세한 로직이 알고싶다면 어떤 분야에 대해 더 공부해보아야 할지 추천 부탁드리겠습니다.
 
현재 머리속에서 너무 많은 부분들이 정리가 안되어서 글이 장황해진점 너무 죄송합니다. 혹시 제가 어떤 의도로 질문을 드린건지 잘 파악이 안되시는 부분이 있다면 풀어서 써보겠습니다.
 
항상 감사합니다 선생님!
 
 
 
 
 
 
 
 
 
 
 
 

답변 2

0

권 철민님의 프로필 이미지
권 철민
지식공유자

헉, 추가 질문이 있으셨군요. 

요 근래 질문이 폭포수처럼 쏟아져서, 추가 질문 알림을 제대로 확인하지 못했습니다. 사과 드립니다. 

1. 선생님께서 언급하신 것처럼, 모델 복잡도를 증가시킬 수 있는 능력이 비선형 함수 때문인걸로 집중적으로 이해하고 있었습니만 사실 그렇지 않다는 부분이 ReLU와 같은 어느 정도의 선형성을 확보한 활성화 함수가 더욱 효과적이로 작용하기 때문에 그렇게 말씀해주신 걸까요? 제가 이해하고 있는 모델의 복잡도를 증가시키는 방법은 parameter들을 더 추가하고 레이어들을 더 쌓는 방법인데 이렇게 레이어를 쌓는 과정이 의미가 있기 위해서는 비선형적인 (ReLU를 포함한) 활성화 함수를 써야 한다고 이해했습니다. 혹시 제가 잘못 이해한 부분이 있다면 지적 부탁드리겠습니다!

=> 아닙니다. 잘 이해하고 계십니다. 하지만, 딥러닝에서 활성화 함수가 중요하지만, 비선형인게 반드시 복잡할 필요가 없다는 의미입니다. 이게 거의 실전적으로 많이 증명되었습니다. 둘러보시면 많은 활성화 함수중에 시그모이드 같은 곡선형 기반의 활성화 함수는 그렇게 많지 않습니다. 

 

2. 또한, ReLU의 장점으로 출력값을 0으로 만들 수 있기에 기존의 잡음을 제거하여 compact한 결과를 학습할 수 있게 한다는 부분이 잘 이해가 되지 않았는데요, 혹시 CNN의 예시로 조금만 더 설명해주실 수 있으실까요? 어떤 필터를 통해 합성곱 연산이 적용된 새로운 feature map에서 음수로 표현된 부분은, 해당 필터가 추출하고자 하는 특징과는 거리가 있을것이라고 추론할 수 있기 때문에 이러한 부분들을 일괄적으로 0으로 바꿔주어 연산을 조금 더 간결화 시킨다 라고 이해하면 될지 궁금합니다.

 => 피처맵에서 음수로 표현이 해당 필터가 추출하고자 하는 특징과 거리가 있을 거라고 추론하는 것은 반은 맞고 반은 틀린것 같습니다. 피처맵이 이미지를 반드시 정확하게 표현하는게 아닙니다. 그러니까 타겟에 맞춰서 표현합니다. 학습 데이터와 타겟에 따라서 동일한 이미지라도 Loss값이 달라질수 있기 때문에 피처맵은 달라집니다. 한마디로 피처맵은 딥러닝 모델이 학습데이터와 타겟레이블에 따라서 사물을 보고자 하는 바탕이지, 일반적인 사물의 특징이라고 정확히 표현하지는 않습니다. 

때문에 피처맵이 음수일때 0으로 만든다는 것은 딥러닝 모델이 필요로 해서 피처맵을 그렇게 만든다는 것입니다. 물론 0으로 바꿔도 말씀하신 대로 필터를 좀 더 간결화 한다는 의미도 내포 하고 있습니다. 

감사합니다.  

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

딥러닝 기초에 대해서 저보다 잘 알고 계셔서, 답변이 조심스럽습니다. 

1.  이를 고려한다면 ReLu 함수는 비록 전체 구간에서는 비선형 함수이지만, 대부분의 구간에서는 선형 함수인데 이러한 부분을 고려할 때 어떻게 ReLu 함수를 사용할 때 저희가 시그모이드와 같은 함수에서 기대하는 것과 같은 비선형적인 특성으로 모델의 복잡도를 올려줄 수 있는것인지 직관적으로 잘 와닿지가 않습니다.

=> 초기 모델에서는 복잡한 문제를 풀기 위해서 비선형성을 가진 활성화 함수를 이용하여 딥러닝 모델을 만들어 왔지만, 하지만 딥러닝 모델이 어느정도 안정화 된 단계에서는 지나치게 비선형된 활성화 함수로 인하여 모델의 층을 더 이상 증가 시키지 못하는 문제가 발생하게 됩니다.  초기 딥러닝 모델은  비선형 함수가 중요한 역할을 했지만, 이제는 그 단계를 훨씬 지났습니다. 

초기 머신러닝 모델은 상당히 비선형적이면서도 규칙적인 활성화 함수를 선호했습니다. 거기에 완벽하게 맞아떨어진게 시그모이드 함수라고 생각합니다. x가 어떤 값이 되더라도 0과 1사이 값을 반환하기 때문입니다. 

시그모이드의 문제점은 이미 적어주신대로 잘 알고 계실테니, 더 말씀 드릴 필요는 없을 것 같습니다. 그리고 ReLU가 시그모이드 대비 어떠한 장점이 있는지 역시 잘 알고 계실것 같습니다. 

결론적으로 말씀드리면 다양한 연구결과 활성화함수가 지나치게 비선형일 필요가 없다는 것입니다. 오히려 선형적인 특성을 강하게 가진 비선형 함수가 더 효과적인 활성화 함수가 될 수 있다는 것입니다. 

하지만 선형적인 특성을 강하게 가진 비선형 함수가 어떻게 더 효과적으로 작용하는지를 정확히 설명하는 것은 제 능력 밖인것 같습니다.  그래도 제가 알고 있는 것을 말씀드리자면

가. 모델이 좀더 쉽게 최적화 된다. 활성 함수가 선형에 가까워지면서 모델이 좀더 예측 가능하게 되고 상대적으로 더 쉽게 최적화 됩니다.  하지만 너무 선형에 가까워지면 최적화가 너무 빠르게 되기 때문에 제대로 학습을 하지 못하게 됩니다. 때문에 적당한 선형성이 활성화 함수에 필요합니다. 

이런 선형에 가까운 활성함수 때문에 학습 속도를 훨씬 빠르게 할 뿐만 아니라,  더 나은 최적화를 이끌었다는 결과는 그 유명한 AlexNet의 논문에서도 자세하게 설명하고 있습니다. tanh보다 약 6배 빠른 학습 시간과, 25%의 학습 에러를 이끌어 냈다고 언급하고 있습니다. 

나. 가에서 언급한 특성때문에 좀 더 깊은 Network에서 최대의 성능을 낼 수 있습니다. 

다.  출력값을 0으로 만들수 있습니다. 이것 역시 중요한 역할을 합니다. sigmoid의 경우 0으로 수렴하는 경우는 극히 드물기에 0으로 만들어지는 출력값은 오히려 기존의 잡음을 제거하는 compact한 결과를 학습할 수 있게 만들어 줍니다. 

2. CNN에서의 ReLU 부분은 제가 질문을 잘 이해하지는 못했습니다만 질문이 너무 길어서 요약해서 답변드리자면, 

아마 지금 이해하고 계신것이 딥러닝의 똑똑하게 만드는것, 그러니까 모델 복잡도를 증가시킬 수 있는 능력이 비선형 함수때문인걸로 집중적으로 이해하고 계셔서 이런 질문을 하시는 걸로 생각됩니다만,,, 그렇지 않다는 것을 앞에서도 답변 드렸습니다. 

그리고 CNN의 필터는 Weight값으로 학습을 하는 것입니다. 초기에는 random에 가까운 값으로 되어 있다가 점점 학습을 하면서 weight값을 최적화 하는데,  이 최적화 하는 단계에서 weight값을 기반으로 만들어지는 feature map을 보면 모양이나 질감등의 형태로 학습이 된다는 거지, filter 자체가 기본적으로 이런 특성을 가지고 있지 않습니다.  random 한 필터값을 이미지 학습을 하면서 만들어지는 것입니다. 

강의에서도 말씀드리지만 일반적인 이미지 처리에서는 사전에 정해진 필터가 있습니다. 이런 필터는 이미지의 색감을 바꾼다거나, 특정 형태로 변형시키는데 사용합니다.  하지만 CNN은 정해진 필터가 없으며, 이미지의 특성을 학습하면서 이러한 필터를 최적화하는 방식입니다. 

오늘은 여기까지 설명드리는 걸로 하고, 여전히 질문이 해결되지 않으신 부분은 다시 질문을 정리해서 올려주시면 될 것 같습니다. 

감사합니다. 

 

vecum0814님의 프로필 이미지
vecum0814
질문자

우선 잘 정돈되지 않은 글임에도 불구하고 너무 친절하게 답변 남겨주셔서 정말 감사합니다 선생님!

덕분에 잘 이해가 되었습니다만 궁금한 점이 조금 더 남아 있어서 이렇게 댓글 남기게 되었습니다.

 

선생님께서 언급하신 것처럼, 모델 복잡도를 증가시킬 수 있는 능력이 비선형 함수 때문인걸로 집중적으로 이해하고 있었습니만 사실 그렇지 않다는 부분이 ReLU와 같은 어느 정도의 선형성을 확보한 활성화 함수가 더욱 효과적이로 작용하기 때문에 그렇게 말씀해주신 걸까요? 제가 이해하고 있는 모델의 복잡도를 증가시키는 방법은 parameter들을 더 추가하고 레이어들을 더 쌓는 방법인데 이렇게 레이어를 쌓는 과정이 의미가 있기 위해서는 비선형적인 (ReLU를 포함한) 활성화 함수를 써야 한다고 이해했습니다. 혹시 제가 잘못 이해한 부분이 있다면 지적 부탁드리겠습니다!

또한, ReLU의 장점으로 출력값을 0으로 만들 수 있기에 기존의 잡음을 제거하여 compact한 결과를 학습할 수 있게 한다는 부분이 잘 이해가 되지 않았는데요, 혹시 CNN의 예시로 조금만 더 설명해주실 수 있으실까요? 어떤 필터를 통해 합성곱 연산이 적용된 새로운 feature map에서 음수로 표현된 부분은, 해당 필터가 추출하고자 하는 특징과는 거리가 있을것이라고 추론할 수 있기 때문에 이러한 부분들을 일괄적으로 0으로 바꿔주어 연산을 조금 더 간결화 시킨다 라고 이해하면 될지 궁금합니다.

 

선생님의 딥러닝 컴퓨터 비전 완벽 가이드 강의도 결제해 두어서 지금 하고 있는 전반적인 복습이 끝나면 바로 수강할 예정이고 이렇게 퀄리티 높은 강의 제작해주셔서 감사하다는 말씀 올리고 싶습니다! 

감사합니다 선생님!

vecum0814님의 프로필 이미지
vecum0814

작성한 질문수

질문하기