작성
·
596
1
답변 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은 정해진 필터가 없으며, 이미지의 특성을 학습하면서 이러한 필터를 최적화하는 방식입니다.
오늘은 여기까지 설명드리는 걸로 하고, 여전히 질문이 해결되지 않으신 부분은 다시 질문을 정리해서 올려주시면 될 것 같습니다.
감사합니다.
우선 잘 정돈되지 않은 글임에도 불구하고 너무 친절하게 답변 남겨주셔서 정말 감사합니다 선생님!
덕분에 잘 이해가 되었습니다만 궁금한 점이 조금 더 남아 있어서 이렇게 댓글 남기게 되었습니다.
선생님께서 언급하신 것처럼, 모델 복잡도를 증가시킬 수 있는 능력이 비선형 함수 때문인걸로 집중적으로 이해하고 있었습니만 사실 그렇지 않다는 부분이 ReLU와 같은 어느 정도의 선형성을 확보한 활성화 함수가 더욱 효과적이로 작용하기 때문에 그렇게 말씀해주신 걸까요? 제가 이해하고 있는 모델의 복잡도를 증가시키는 방법은 parameter들을 더 추가하고 레이어들을 더 쌓는 방법인데 이렇게 레이어를 쌓는 과정이 의미가 있기 위해서는 비선형적인 (ReLU를 포함한) 활성화 함수를 써야 한다고 이해했습니다. 혹시 제가 잘못 이해한 부분이 있다면 지적 부탁드리겠습니다!
또한, ReLU의 장점으로 출력값을 0으로 만들 수 있기에 기존의 잡음을 제거하여 compact한 결과를 학습할 수 있게 한다는 부분이 잘 이해가 되지 않았는데요, 혹시 CNN의 예시로 조금만 더 설명해주실 수 있으실까요? 어떤 필터를 통해 합성곱 연산이 적용된 새로운 feature map에서 음수로 표현된 부분은, 해당 필터가 추출하고자 하는 특징과는 거리가 있을것이라고 추론할 수 있기 때문에 이러한 부분들을 일괄적으로 0으로 바꿔주어 연산을 조금 더 간결화 시킨다 라고 이해하면 될지 궁금합니다.
선생님의 딥러닝 컴퓨터 비전 완벽 가이드 강의도 결제해 두어서 지금 하고 있는 전반적인 복습이 끝나면 바로 수강할 예정이고 이렇게 퀄리티 높은 강의 제작해주셔서 감사하다는 말씀 올리고 싶습니다!
감사합니다 선생님!