본문 바로가기

분류 전체보기

(125)
비-수학적 특성 공학(Non-Mathematical Feature Engineering ) 앞서 특성 선택(Feature Selection)에 대한 글을 적은 적이 있는데, 막상 특성 선택 방법론 몇 가지 아는 것으로는 모델을 개선하는데 드라마틱한 결과를 얻어내는 것이 쉽지 않았습니다. 더군다나 RNN처럼 복잡한 모델의 경우에는 더더욱 앞의 방법론 대부분이 무의미합니다. 그렇다고 더이상 데이터를 정제할 방법이 없는 것이 아니겠지요. 특성을 다듬고, 선택(Selection)하고, 스케일링(Scaling)하고, 추출(Extraction)하는 것이 결국 특성 공학(Feature Engineering)의 완성입니다. 이번에는 특성을 비수학적인 방법으로 다듬는 방법에 대해 소개합니다. 특성 공학이란? 사실 대부분의 경우에 있어서, 그저 존재하던 날 것의 데이터를 그대로 모델에 주입시켜 학습한다고 좋은 ..
Overfitting을 막는 regularization 핵심키워드 Regularization Overfitting 학습하기 이번에는 레귤라이제이션을 배워보겠습니다. 이는 딥러닝뿐 아니라 머신러닝 자체에서 굉장히 중요한 영역입니다. 레귤라이제이션이란 뭘까요. 수학적 정의 자체는 저도 잘 모르겠습니다. 그러나 목적은. 명확합니다. 오버피팅이라는 현상을 막는 것이죠. 오버피팅이란 학습 데이터를 너무 믿는 것을 말합니다. 결국 학습 데이터에 과하게 최적화된 나머지, 다른 테스트 데이터에 대한 정확도가 떨어지는 것입니다. 회귀나 분류나 마찬가지입니다. 그렇다고 학습 데이터에 최적화되는 것(=트레인 정확도가 높아지는 것)이 나쁜 것이냐면, 당연히 아닙니다. 잘 맞추는데 좋은 거죠. 다만 문제는, 많은 학습 데이터가 모든 실전 데이터를 대표할 수 있을 만큼 질이 뛰어나지..
[실습] 이미지 처리 실습하기 핵심 키워드 Python 이미지 프로세싱(Image Processing) 학습하기 해당 내용은 코드로 대체합니다.
뉴럴 네트워크의 일반적인 디자인 원칙(General Design Principles of Neural Network) 이는 유명한 CNN 아키텍쳐 중 하나인 Inception Architecture(GoogLeNet)의 논문 "Rethinking the Inception Architecture for Computer Vision" 중 2. General Design Priciples 을 번역 및 해석한 것입니다. 처음 모델을 만들어 나갈 때 좋은 참고자료가 될 것 같습니다. 정리(Theory) "There is a single hidden layer feedforward network that approximates any measurable function to any desired degree of accuracy on some compact set K" 간단히 말하면, 일반적인 Neural Network는 모든 함..
뉴럴 네트워크 디자인 팁(Designing Your Neural Networks) 앞서 뉴럴 네트워크의 일반적인 디자인 원칙(General Design Priciples of Neural Network)를 작성한 뒤, 조금 더 상세한 내용이 있었으면 좋겠다 싶었는데, 좋은 글을 발견하여 번역해보았습니다. 뉴럴 네트워크를 구성하고, 학습시키는 것은 굉장히 막막합니다! 어느정도의 Learning rate를 채택할지, 얼마나 많은 Hidden layer를 쌓을지, 어떤 Regularization 기법을 선택할지 등 정말 밑도끝도 없는 선택의 연속입니다. 이번 글에서는, 이런 선택의 갈림길에서, 당신이 조금 더 똑똑한 선택을 할 수 있도록 도움을 줄 것입니다. 동시에 나는 이 커널을 함께 보면서 아래의 내용을 공부하는 것을 추천합니다. 1. 기본적인 뉴럴 네트워크 구조 Input neuron..
4가지 CNN 살펴보기: AlexNet, VGG, GoogLeNet, ResNet 핵심 키워드 CNN(Convolutional Neural Network) Conv2D AlexNet VGG GoogLeNET ResNet 학습하기 오늘 살펴볼 CNN 아키텍쳐는 총 4가지 입니다. AlexNet, VGG, GoogLeNet, ResNet. 일반적으로 유명한 CNN 아키텍쳐로 이 4개를 꼽기도하며, ILSVRC라는 이미지 분류대회에서 1등을 했던 모델들입니다. 이 대회에서 기존에는 CNN 모델이 거의 없었지만 AlexNet의 1등을 시작으로, 거의 대부분의 참여자들이 CNN 모델을 가져왔습니다. AlexNet, VGG, GoogLeNet, ResNet 순서대로 개발되었으며, 점점 레이어가 깊어지면서, 성능도 개선되었습니다. 물론 레이어가 그냥 많다고 성능이 좋아지는 건 아닙니다. 성능이 좋..
데이터 스케일링(Data Scaling) 코드 머신러닝을 위한 데이터셋을 정제할 때, 특성별로 데이터의 스케일이 다르다면 어떤 일이 벌어질까요. 예를 들어, X1 특성은 0부터 1사이의 소수값을 갖는다 비해, X2 특성은 1000000부터 1000000000000사이의 소수값을 갖는 상황에서 y 값은 1000000부터 100000000까지의 값을 갖는 다고 가정하면, 사실 X1 특성은 y를 예측하는데 큰 영향을 주지 않는 것으로 생각할 수 있습니다.(이 외에도 overflow, underflow, 발산 수렴 등의 문제가 있습니다.) 때문에 이런 상태에서는 머신러닝이 잘 작동하지 않게 됩니다. 때문에 저희는 데이터 스케일링 작업을 통해, 모든 특성의 범위(또는 분포)를 갖게 만들어줘야합니다. 이를 위한 4가지 스케일링을 정리하겠습니다. 1. St..
[실습] 기본 파이썬 문법 실습 코드 #Rank a = np.array([[1,2,3],[2,3,4]]) row_r1 = a[1, :]# [2,3,4] , rank=1 row_r2 = a[1:2, :]# [[2,3,4]], rank=2 row_r3 = a[[1], :]# [[2,3,4]], rank=2 세 개의 코드의 출력은 모두 비슷하게 생겼으나, 값을 명시해주는 것에 따라 출력물의 랭크(차원)이 달라진다. #Rank x = np.array([[0,1], [2,3]], dtype=np.int) print(x) # [[0,1], [2,3] z = x print(z) # [[0,1], [2,3]] z[0,0] = 100 print(z) # [[100,1], [2,3]] print(x) # [[100,1], [2,3]] 파이썬은 기본적으로..