본문 바로가기

Data Science

(21)
가능도(Likelihood) 이번 포스팅에서는 "가능도(Likelihood)" 에 대해서 정리해보려 한다. 가능도(Likelihood)의 정확한 개념과 더불어, "가능도"와 "확률"의 차이점에 대해 한 번 정리를 해보려 한다. 우선 확률(Probability)과 가능도(Likelihood)의 정의를 살펴보면 다음과 같다. 확률: 주어진 확률분포에서 해당 관측값이 나올 확률 가능도: 주어진 관측값이 특정 확률분포로부터 나왔을 확률 (= 연속확률밀도함수의 y 값) 음.. 이렇게 한 줄로 된 정의만 보면 무슨 말인지 통 이해가 안 될 것이다... (위 정의만으로 이해가 된다면 그 분은 아마도 통계학 전공자일 것이다) 자, 그러면 "확률(Probability)"의 개념부터 천천히 설명해 보도록 하겠다. "확률"이란 주어진 확률분포가 있을 ..
차원의 저주(The Curse of Dimensionality) 오늘은 "차원의 저주(The Curse of Dimensionality)"에 대해 정리해보는 시간을 갖도록 하겠다. 그래서 차원의 저주가 뭔데?! 차원의 저주를 대표할 수 있는 하나의 사자성어가 있는데, 바로 "과유불급"이다. 결론부터 말하면 차원의 저주란 데이터 용량이 커질수록 불필요한 샘플이 많아지는 현상을 뜻한다. (참고로 "차원의 증가 = 변수의 개수 증가"라고 이해를 하면 쉽다) 차원의 저주와 관련하여 구글에 검색해보면 가장 상위에 뜨는 블로그가 하나 있는데, 이 블로그의 관리자 분께서 정말 이해하기 쉽도록 설명을 해두셨다. 그리고 K-NN 방법이 왜 차원의 저주 문제에 치명적인지도 명확하게 설명이 되어 있으니, 아래의 링크를 참고하면 좋을 것 같다. https://datapedia.tistor..
베이지안 최적화(Bayesian Optimization) 이번 포스팅은 하이퍼파라미터 튜닝 방법으로 많이 사용되는 "베이지안 최적화(Bayesian Optimization)" 기법에 대해 설명해보도록 하겠다. 단, Bayesian Optimization 기법의 이론적인 내용을 깊게 들어가면 너무 어렵기 때문에, 큰 틀에서의 개념 정도만 이해하는 것을 이번 포스팅의 목표로 삼겠다. (솔직히 필자도 아직 이론적으로는 완벽하게 이해하지 못했다..) 물론 대표적인 하이퍼파라미터 튜닝 기법인 "그리드 서치(GridSearch)"와 "랜덤 서치(RandomSearch)"를 사용해서 튜닝을 진행해 볼 수도 있다. 그러나 위 두 가지 방법은 아래와 같은 단점이 존재한다. GridSearch의 단점 모든 하이퍼파라미터 후보들에 대한 일반화 성능을 확인하기 때문에 시간이 너무 ..
[밑바닥부터 시작하는 딥러닝 1] Ch 8. 딥러닝 지금까지 신경망에 대해 자세히 공부하였다. 이번 포스팅은 "밑바닥부터 시작하는 딥러닝 1"의 마지막 장으로 "딥러닝"에 대한 설명을 해보도록 하겠다. 간단하게 설명하면 딥러닝이란 층을 깊게 한 심층 신경망이다. 대규모 일반 사물 인식의 경우, 문제가 엄청나게 복잡하므로 층을 깊게 하면 정확도를 크게 끌어올릴 수가 있다. 이러한 이유 때문에 "딥러닝"이 각광받고 있는 것이다. 또한 딥러닝 모델의 정확도를 향상시키는 방법으로 "앙상블 학습, 학습률 감소, 데이터 확장" 등이 있다. 여기서 "데이터 확장"이란 입력 이미지(학습 이미지)를 알고리즘을 동원하여 인위적으로 확장하는 것을 의미한다. 데이터 확장 방법으로는 대표적으로 6가지가 존재한다. Flip 이미지를 랜덤하게 좌/우 또는 상/하 반전시키는 방법 이..
[밑바닥부터 시작하는 딥러닝 1] Ch 7. 합성곱 신경망(CNN) 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 합성곱 신경망(CNN)을 기초로 한다. 그렇다면 합성곱 신경망. 즉, CNN이란 무엇일까? 이번 포스팅에서는 CNN에 대해 정리해보도록 하겠다. CNN의 네트워크 구조를 살펴보면, 지금까지 앞에서 공부한 완전연결 계층인 Affine 계층에 추가적으로 합성곱 계층(Convolutional Layer)과 풀링 계층(Pooling Layer)이 새롭게 등장한다. 여기서 주목할 점은 출력에 가까운 층에서는 지금까지 공부한 Affine-ReLU 구성을 사용할 수 있다는 것, 그리고 마지막 출력 계층에서는 Affine-Softmax 조합을 그대로 사용한다는 것이다. CNN에서는 패딩(Padding), 스트라이드(Stride) 등 CNN 고유의 용어가 등장하며, ..
[밑바닥부터 시작하는 딥러닝 1] Ch 6. 학습 관련 기술들 이번 포스팅에서는 가중치 매개변수의 최적값을 탐색하는 최적화 방법, 가중치 매개변수 초깃값, 하이퍼파라미터 설정 방법 등 신경망 학습에서 중요한 기술들에 대해서 설명하고, 과적합의 대응책인 가중치 감소, Dropout, 배치 정규화 등의 정규화 방법에 대해서도 설명하도록 하겠다. 확률적 경사하강법(SGD) 기울어진 방향으로 일정 거리만큼 가겠다는 단순한 방법임 단점은 기울기가 달라지는 함수에서는 탐색 경로가 비효율적임 따라서 SGD는 단순하고 구현도 쉽지만, 문제에 따라서는 비효율적일 때가 있음 이러한 SGD의 단점을 개선해주는 방법으로는 "Momentum, AdaGrad, Adam"이 있음 Momentum 기본적으로 SGD와 유사하지만, "속도(v)"라는 개념이 추가됨 즉, 물체가 아무런 힘을 받지 않..
[밑바닥부터 시작하는 딥러닝 1] Ch 5. 오차역전파법 여태까지 우리는 단순하고 구현하기도 쉬운 "수치 미분"을 통해 가중치 매개변수에 대한 손실 함수의 기울기를 구했다. 그러나 "수치 미분"은 계산 시간이 오래 걸린다는 단점이 있으므로, 일반적으로는 "오차역전파법"을 사용한다. 그렇다면 수치 미분은 아무런 쓸모가 없는 것일까? 그렇지 않다. 수치 미분은 오차역전파법을 정확히 구현했는지 확인하기 위해 필요하다. (기울기 확인 = Gradient Check) (즉, 수치 미분의 결과와 오차역전파법의 결과를 비교하여 오차역전파법을 제대로 구현했는지 검증하는 용도로 사용) 이와 같은 작업이 필요한 이유는 "수치 미분"은 구현이 단순하고 쉬운 반면, "오차역전파법"은 구현하기 복잡해서 종종 실수를 할 수 있기 때문이다. 일반적으로 두 방법에 대한 결과의 오차가 0에..
[밑바닥부터 시작하는 딥러닝 1] Ch 4. 신경망 학습 이번 포스팅은 "신경망 학습"에 대한 내용을 다루도록 하겠다. 학습 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 의미함 신경망이 학습할 수 있도록 해주는 지표가 바로 "손실 함수"임 손실 함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는 것이 학습의 목표이며, 이 때 "경사하강법"이 사용됨 기계학습에서는 사람의 개입을 최소화하고, 수집한 데이터로부터 패턴을 찾으려 시도한다. 신경망과 딥러닝은 기존 기계학습에서 사용하던 방법보다 사람의 개입을 더욱 배제할 수 있게 해주는 중요한 특성을 지녔다. 이와 같은 이유로 딥러닝을 "End-to-End 기계학습"이라고도 한다. 기계학습 문제는 데이터를 학습 데이터(train data)와 테스트 데이터(test data)로 나눠서 학습과 ..