728x90

안녕하세요 푸키입니다. 오늘은 머신러닝의 배치학습과 온라인 학습에 대해서 이야기하겠습니다. 


글의 흐름

< 머신러닝 >

1. 머신러닝 분류 (1) 회귀와 분류 
2. 머신러닝 분류 (2) 배치학습과 온라인 학습 << 현위치 
3. 머신러닝 분류 (3) 사례 기반과 모델 기반 
4. 데이터 인코딩/ 피처스케일링/ 교차검증
5. 주요 머신러닝 모델 소개 

< 딥러닝 > 

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

머신러닝 분류 (2) 배치학습과 온라인 학습 

머신러닝 시스템을 분류하는 데 사용하는 다른 기준은 입력 데이터의 스트림으로부터 점진적으로 학습할 수 있는지 여부입니다. 배치 학습과 온라인 학습이 있습니다.

배치 학습이란?

배치학습에서는 시스템이 점진적으로 학습할 수 없습니다. 데이터를 모두 사용해 훈련하기 때문에 오프라인에서 수행되기 때문에 오프라인 학습이라고 합니다. 학습 시스템이 새로운 데이터에 대해 학습하려면 전체 데이터를 사용해서 다시 처음부터 시작해야 합니다. 다행히 전체 과정이 쉽게 자동화 될 수 있어 변화에 적응할 수 있습니다. 따라서 배치 학습은 잘 작동하지만 전체 데이터셋을 사용해 훈련하는 데 몇 시간이 소요될 수 있습니다. 따라서 빠르게 적응해야 한다면 다른 방법이 필요합니다

온라인 학습이란?

온라인 학습에서는 데이터를 순차적으로 한 개씩 또는 미니배치라 부르는 작은 묶음 단위로 주입하여 시스템을 훈련시킵니다. 새로운 데이터 샘플을 학습하면 학습이 끝난 데이터는 더 이상 필요하지 않으므로 버리면 됩니다. 따라서 매우 큰 데이터셋을 학습하는 시스템에도 온라인 학습 알고리즘을 사용할 수 있습니다. 여기서 중요한 건 학습률입니다. 변화하는 데이터에 얼마나 빠르게 적응할 것인지를 학습률이라고 하는데 학습률을 높게 하면 시스템이 데이터에 빠르게 적응하지만 예전 데이터를 금방 잊어버리고 학습률이 낮으면 속도가 느립니다. 온라인 학습에서 가장 큰 문제는 시스템에 나쁜 데이터가 주입될 때 시스템 성능이 점진적으로 감소합니다.

 


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

마음에 드셨다면 공감 부탁드립니다. 오류가 있다면 댓글로 알려주세요. 끊임없이 수정하고 있습니다. 

 

728x90
728x90

안녕하세요 푸키입니다. 오늘은 머신러닝의 회귀와 분류에 대해서 이야기하겠습니다. 


글의 흐름

< 머신러닝 >

1. 머신러닝 분류(1) 머신러닝 회귀와 분류 << 현위치 
2. 머신러닝 분류(2) 머신러닝 배치학습과 온라인 학습
3. 머신러닝 분류(3) 머신러닝 사례 기반과 모델 기반 
4. 데이터 인코딩/ 피처스케일링/ 교차검증
5. 주요 머신러닝 모델 소개 

< 딥러닝 > 

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

머신러닝이란?

머신러닝은 인간이 학습을 통해 정확도를 점진적으로 개선하는 방식을 모방하기 위한 데이터와 알고리즘의 사용에 초점을 맞춘 인공지능(AI) 및 컴퓨터 사이언스의 한 분야입니다. 알고리즘을 이용하여 데이터를 분석하고, 분석 결과를 스스로 학습한 후, 이를 기반으로 어떠한 판단이나 예측을 하는 것을 의미합니다

머신러닝은 학습과 개선을 위해 명시적으로 컴퓨터를 프로그래밍하는 대신, 컴퓨터가 데이터를 통해 학습하고 경험을 통해 개선하도록 훈련하는 데 중점을 둡니다. 머신러닝에서 알고리즘은 대규모 데이터 세트에서 패턴과 상관관계를 찾고 분석을 토대로 최적의 의사결정과 예측을 수행하도록 훈련됩니다.  

 

머신 러닝의 3가지 학습방법 

머신러닝은 크게 세가지로 분류 할 수 있는데 이번 게시물에는
학습하는 동안의 감독 형태나 정보량에 따라 분류하겠습니다. 

이 분류에는 총 3가지 학습방법이 있습니다. (준지도학습까지 4가지라고도 합니다) 

https://live.lge.co.kr/live_with_ai_01/

 

① 지도 학습 (Supervised Learning)
:  정답을 기반으로 오류를 줄여서 학습하는 방법. 지도 학습에는 알고리즘에 주입하는 훈련 데이터에 레이블이라는 원하는 답을 포함합니다. 지도 학습에는 밑에서도 설명하겠지만 분류와 회귀 방법이 있습니다. 
지도 학습은 반복 학습을 통해서 오류를 줄여가면서 점점 더 정답에 가까워지게 됩니다.

② 비지도 학습 (Unsupervised Learning)
: 정답을 모르더라도 유사한 것들과 서로 다른 것들을 구분해서 군집을 만들 수 있는 학습하는 방법.
비지도 학습에는 군집, 시각화와 차원축소 등이 있습니다. 


최근에는 지도 학습과 비지도 학습을 섞어서 데이터에 정답을 유추해 나가는 방법의 기술들도 많이 나오고 있으며, 이를 준지도 학습(Semi-Supervised Learning)이라고 합니다. 군집을 학습한 후에, 군집의 일부 데이터만 사람이 정답을 매겨주면, 그 군집 전체를 사람이 매긴 정답으로 볼 수 있다는 원리입니다.

③ 강화 학습 (Reinforcement Learning)
: 보상과 벌칙과 함께 여러 번의 시행착오를 거쳐 스스로 학습하는 방법. 여기서 학습하는 시스템을 에이전트라고 부르며 환경을 관찰해서 행동을 실행하고 보상이나 벌점을 받습니다. 가장 큰 보상을 받기 위해 정책이라고 부르는 최상의 전략을 스스로 학습합니다. 보행로봇 같은 경우에 사용합니다. 

머신 러닝에서 회귀와 분류란?

https://davincilabs.ai/wiki/?q=YToxOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjt9&bmode=view&idx=7709711&t=board

지도학습에서 데이터의 종류에 따라 분류와 회귀로 나눌 수 있습니다. 

분류는 종속 변수 (target)범주형 데이터지만

회귀에서 종속 변수는 수치형 데이터입니다. 

즉 종속변수 ( 목표) 가 범주형 데이터면 분류, 종속 변수 ( 목표) 가 수치형 데이터면 회귀를 이용해야하는 것 입니다. 


예를 들어볼까요,

사람들의 수면시간을 입력 ( 독립변수) 시험 점수를 확인합니다. (종속 변수)  -> 회귀

사람들의 수면시간을 입력( 독립변수)  최종 합격여부를 확인합니다. (종속 변수)  -> 분류


회귀에서는 또, 독립변수 (x)가 한 개이고 종속변수 (Y)가 하나일 경우 단순 선형 회귀

독립변수 (X) 여러개와 종속변수 (Y) 하나의 관계일 경우 다중 선형 회귀라고 합니다. 


이에 회귀문제에서는 최적의 회귀 계수를 찾아야 합니다.

예측값과 실젯값의 차이 즉 오차를 최소화 해야하지만,  이 오차가 0이기엔 어렵고 그에 가까울 경우 과대적합일 경우도 있습니다. 이에 관련해서 다음장에서 설명드리겠습니다. 

*과대적합: 훈련한 데이터에만 정확도가 맞고 그렇지 않은 데이터에는 적합하지 않은 현상입니다. 저도 머신러닝 프로젝트를 할 때 다음과 같은 일이 많았습니다. 훈련한 데이터는 기가막히게 잘 분류하는데, 글쎄 다른 데이터는 분류를 엄청 이상하게 하더라구요. 이를 해결하는 방법에 대해서 다음에 말씀드리겠습니다.


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

마음에 드셨다면 공감 부탁드립니다. 오류가 있다면 댓글로 알려주세요. 끊임없이 수정하고 있습니다. 

728x90
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

+ Recent posts