728x90

안녕하세요 푸키입니다. 

이번 글에서는   캐글에 대해 이야기해보겠습니다. 


 

당장 제가 머신러닝을 처음 배울 때, 악명높은 수업을 들었는데 교수님이 무작정 머신러닝을 활용해서 결과물을 내라고 하셨습니다. ( 아무설명 없이!) 그 덕에, 정말 많은 고민을 하고 있던 찰나 대학원생분께서 다양한 데이터셋 사이트를 알려주셨습니다. 그 중 하나가 Kaggle 이었는데요. 그때부터 kaggle을 알게 되었습니다. Kaggle 은 단순히 데이터 셋 뿐만 아니라 다양한 대회와 교류의 장이기도 한데요, kaggle을 이용해서 머신러닝관련 국제 대회 경력도 쌓을 수 있기에 관심이 있다면 정말 괜찮은 사이트입니다.

 


다음과 같은 메뉴로 competition에서는 현재 열리고 있는 대회를

Datasets에서는 수많은 좋은 데이터셋을 구할 수 있습니다.

Code에서는 다른 사용자가 작성한 코드를 볼 수 있습니다. 

Discussions에서는 다른 사람과 의견을 공유할 수 있으며, 

learn 에서는 기초 내용을 학습할 수 있습니다. 

 


관심있는 분들은 캐글에 들어가서 실력을 키우는 것을 추천드립니다. 저 또한 연습해서 실력을 키워보도록 하겠습니다. 

푸키였습니다 좋은 하루 되세요! 

마음에 드셨다면 공감 부탁드립니다

728x90
728x90

글의 흐름

< 머신러닝 >

1. 머신러닝 회귀와 분류 
2. 회귀 모델 
3. 분류 모델 
4. 데이터 인코딩/ 피처스케일링/ 교차검증
5. 주요 머신러닝 모델 소개 

< 딥러닝 > 

1. 그래프 모델 개념 및 신경망 기본 구조 소개 
2. 전방향 연산, 가중치 초기화, 배치 기반 연산학습. Regularization 기본 개념
3. 신경망에서 학습의 의미, 역전파 기본 개념 및 chain Rule 을 이용한 학습
4. RBM 구축 과정, 수학이론, 구현 연습 
5. CNN 개념 << 현위치 
6. 다양한 딥러닝 모델 소개


 

그동안 전통적인 프로그램이 Rules, Data 를 통해 Answer 을 출력하는 과정이었다면 ( 예를 들어 2*x=y 와 x의 값들을 주면 y값이 출력됩니다 ) 

머신 러닝은 Answers와 Data를 통해 Rules를 출력하는 과정입니다.

그럼 Rules를 찾는 방법은 무엇일까요? 그 중 하나가 CNN 방식입니다.

CNN이란?

Convolutional Neural Network 의 약자로 기존 Neural Network는 1차원으로 변경 후 넣어주어야 하므로, 공간정보가 손실되었습니다.

그러나 CNN같은 경우 convolution 연산을 통해 공간 정보를 보존 가능하게 학습 시킬 수 있게 됩니다. 

convoultion 연산은 신호 및 시스템이나 공학수학에서 필수적으로 다루는 개념이니 검색해보시길 바랍니다. 시간이 되면 따로 정리해보겠습니다.  

ex) 그림과 같이 INPUT 그림을 생각해보면 각 픽셀의 공간적 위치에 따라 A가 정해집니다. 그러나 기존 Neural Network ( 즉 Deep Neural Network는 이를 그저 1차원의 쭉 기다란 배열로 바꾸게 되므로 공간정보를 담지 못합니다. Convolution Neural network는 Convolution이라는 연산을 통해 공간적인 특징까지 담을 수 있게 되는 것입니다. 

CNN의 원리

 raw 이미지와  conv 연산을 통해 feature map을 생성합니다. 

 

다음과 같이 이미지는 숫자로 이루어져 있습니다. 예를 들면 RGB 3가지로 한 픽셀을 나타낼 수 있습니다, (255,0,0) 이와 같이 각 픽셀마다 색깔을 숫자로 변경할 수 있습니다. 

그 숫자들을 위와 같은 방식처럼 필터라는것을 이용해서 숫자들을 곱해줍니다. 여기서는 3*3 필터를 사용했습니다.  그럼 특정부분은 강화되서 보이고 특정부분은 약화되서 보입니다.   

여기서 필터가 움직이는 간격을 stride 라고 하는데 위에서 stride는 1이 됩니다. 1칸씩 움직이니까요. 

여기서 문제가 생깁니다.

convoultion 방식으로 계산을 하게 되면, map 이 계속해서 작아지게 됩니다. 

따라서 주변에 0을 채워넣는 padding 이라는 것이 필요합니다.

기존은 6*6 이지만 zero padding을 이용해 주변을 0으로 채워주었다.

 

3차원의 경우 다음과 같이 계산합니다. 

출처: https://medium.com/@miyachan84/%ED%95%A9%EC%84%B1%EA%B3%B1-%EC%8B%A0%EA%B2%BD%EB%A7%9D-convolutional-neural-networks-5db5c7cb91dc

 

 

Activation 함수 - feature map을 만든 후, 곧바로 convoultion Layer 에 넣는 것이 아니라 Activation 함수를 거친 후 다음 layer 에 넣어줍니다. 이는 parameter 의 overfitting을 억제하고, Data를 비선형으로 바꾸어 정확도를 높입니다. 이 역시 어려운 내용이라 일단 있다고 생각하고 넘어가겠습니다. 

계산되면 해당 특징을 잘 나타낼 수 있는 값들만 FC layer (Fully connected) 에 넣기 위해  Pooling을 계산합니다. 

pooling layer- 데이터의 공간적인 특성을 유지하면서 크기를 줄여주는 층입니다.  특정위치에서 큰 역할을 하는 특징을 추출하거나, 전체를 대변하는 특징을 추출할 수 있는 장점이 있는 pooling layer 을 사용합니다. 또한 overfitting problem 역시 해결할 수 있습니다

Max Pooling 방식 - 해당 그리드에서 가장 큰 값 이용

Average Pooling 방식 - 각 그리드에 속한 값들의 평균 이용

pooling 의 두가지 방식

Fully-connected layer을 통해 평탄화 작업을 거쳐 출력을 냅니다.  Flattened 라고 합니다. 

https://blog.naver.com/intelliz/221709190464

그 후 최종으로 softmax 에서 결과값을 출력합니다. 여기서는 하나의 input이 하나의 logits에 들어가야 합니다. 

전체적인 과정을 복기하면 이렇습니다. convolution 과 pooling 을 반복하고 fully- connected layer로 평탄화 한 후 softmax를 이용해 결과값을 출력합니다. 

이렇게 반복 수행을 통해 weight (가중치) 수행이 조정됩니다.  입력이 어떤 출력이 되도록 weight 값을 조종하는 것을 learning 이라고 하는 것입니다.

 

이 어려운걸 그냥 전부 코드로 구현하기보다 텐서플로우 같은 도움을 받아 구현하게 됩니다. 머신러닝을 공부하는 동안 차근차근 정리해보겠습니다. 이 게시물 또한 계속해서 수정해서 매끄럽게 다져보겠습니다. 

 


혹시 틀린 부분이나 궁금한 점이 있다면 편하게 답글 달아주세요.

시간 나시면 마음 눌러주시면 감사하겠습니다.

푸키였습니다~ 

728x90
728x90

안녕하세요 푸키입니다.

이번에는 대구과학기술원 DGIST에서 하계대학원 인턴으로 일했던 경험에 대해서 이야기하려고 합니다. 

동계 인턴 모집 요강

이처럼 DGIST는 매년 하계/ 동계마다 대학원 인턴을 모집합니다. 아마 시기별로 다를 거 같은데 종종 홈페이지를 간 후 공지사항을 꾸준히 체크하면 좋을 것 같습니다. 


1. 인턴 지원 

1학기 당시, 저는 전자기학 수업을 들었는데 교수님이 해주시는 강의가 즐거워서 관련된 활동들을 더 찾아보다 대학원에 관심이 생기게 되었습니다. 마침, 에브리타임에 DGIST 대학원 후기가 올라와 있기에 염두하고 있다가 지원 시기에 지원서를 넣었습니다. 그때 당시에 학점이 엄청 낮고 별다른 스펙이 없기에 당연히 떨어질 줄 알았는데 자소서가 빛을 발해 합격하게 되었습니다. 나중에 알고보니 경쟁률도 높고 많이 탈락했다고도 합니다. 

교수님의 논문을 열심히 읽고 이야기 했는데 사실 크게 염두하지 않는 것 같았습니다. 중요한 건 자기가 그동안 했던 내용들을 풀어내는 게 중요하고 열정인것 같습니다. 

* 추후에 제 친구가 탈락했는데 아무래도 랩바이 랩 경향이 있는 것 같습니다. 저는 컨택을 따로 안했지만 유명한 랩실들은 미리 컨택하고 인턴 지원하는 것을 추천드립니다. 


2. 시설 

기숙사는 걱정안해도 됩니다. 시설이 정말 좋습니다. 또한 대구 현풍이 정말 공기가 좋기 때문에 건강해지는 느낌을 많이 받았습니다. 디지스트 건물이 통유리여서 여름에 정말 덥긴 하지만 깔끔하기도 하고 사람도 없어 나쁘지 않았습니다. 

기숙사 내부

저희 학교에 비하면 기숙사가 정말 싸고 정말 좋습니다. 그립네요. 

 


3. 주변 

현풍 시설

정말 산골이지만 현풍이라는 동네가 정말 이쁩니다. 서울에서 오신 분은 조금 지루할 수도 있겠지만 인턴이 끝나고 저는 이런 한적한 동네를 좋아하기 때문에 자주 생각이 났습니다. 조금 사설이지만 현풍 도깨비 시장이나 현풍 닭칼국수 등 먹을 곳도 많습니다. 조금 외람된 내용이지만 현풍의 맛집이나 볼 거리가 궁금하시다면 댓글주세요 알려드립니다. 


4. 첫주차 

다음과 같이 임시출입증을 5주간 줍니다.

첫 주차 저희 랩실 같은 경우는 적응주간을 두었는지 랩이 어떤 활동을 하는 지와 어떤 주제로 연구할 것인지를 정했습니다. 간단한 퀴즈도 박사과정분께서 내주시고 적응하는 과정을 거쳤습니다. 논문 보는 법등 여러가지 질문들도 잘 받아주셔서 그동안 궁금했던 대학원 질문들도 많이 해소했습니다.  저같은 경우 주제를 신물질의 물성 연구를 택했습니다. 반도체 물성에서 공부했던 내용과 전기기기에서 공부한 자성 관련 내용이 많이 겹쳐 주제를 선택했는데 끝나고 좋은 선택이었다고 많이 느꼈습니다. 

 

다음 게시물에는 어떤 활동을 했고 발표한 내용, 최종 후기를 정리해서 올리겠습니다. 

 

728x90

+ Recent posts