본문 바로가기

ML&DL

(32)
Linear regression/Logistic regression 원리 이 블로그는 단순히 내가 공부하는 내용을 정리하고자 글을 올리는 공간이다. regression을 이해하는데 참고한 사이트들을 통해 내가 이해한 방식대로 써내려갔다. 이곳 과 이곳 그리고 이곳을 이용해 포스팅을 했다는 것을 말하고 시작하겠다. 머신러닝을 한번이라도 공부해본 사람이라면 regression(회귀)에 대해 들어봤을 것이다. linear regression과 logistic regression 두가지 방법이 있는데, 둘의 차이를 간단히 정리해보면, linear regression은 target값으로 실수값을 예측할 때 사용하는 방법이고 logistic regression은 classification을 할 수 있는 regression으로 정수값을 예측할 때 사용하는 방법이다. binary class..
Naive bayes classifier(나이브 베이즈 분류기) 원리 앞선 포스팅에서 살펴본 실질적인 bayesian learning method중 하나가 naive bayes learner이다. 이를 niave bayes classifier라고 부르기도 한다. 이 방법은 몇몇 domain(예를들면, NLP)에서 neural net이나 decision tree와 비등한 성능을 냈다. 새로운 instance를 분류하는 bayesian approach는 instance를 표현하는 특징벡터가 주어졌을때, 가장 probable한 target(class)를 찾는 것이다. Bayes theorem 다시 앞선 포스팅에서 봤던 베이즈정리를 정의해보자. 우리가 하려는 분류문제에 맞게 변수를 정의해보자면, y는 분류하고자 하는 class가 된다. X는 input의 특징벡터가 된다. X를 각..
Bayes theorem(베이즈정리)와 MLE/MAP 이제부터 두 개의 포스팅을 통해 Bayesian learning에 대해서 살펴보도록 할 것이다. 기본적으로 Bayesian learning은 추론에서 확률적인 접근을 제공한다. 우리가 관심을 갖는 값(모델,클래스)이 확률분포에 의해 좌우된다는 생각에서 시작한다. 그리고 관측된 데이터와 함께 확률을 추론함으로써, 관심을 갖는 값에 대한 optimal한 decision을 내릴 수 있다는 것을 기초로 하는 learning이다. 기본적으로 확률시간에 많이 배웠던 베이즈정리를 한번 쉬운말로 정리해보고 class의 분류(classification)에 쓰일 수 있는 MLE와 MAP에 대해 직관적으로 설명해보도록 하겠다. 또한 데이터 모델링에 사용되는 파라미터(weight같은)를 예측하는데 쓰일 때 least squa..
K Nearest Neighbor(K 최근접 이웃) 원리 raw데이터가 존재할 때, 그 raw data를 바로 사용할 수도 있지만 이를 가공하여 사용하기도 한다. 주어진 데이터의 특징들을 뽑아서 feature vector를 뽑아내서 이를 머신러닝모델의 input으로 사용하게 된다. 이때의 feature vector는 대체로 높은 차원을 갖는 벡터가 된다. 여러 날(day1,2,3....)이 주어졌을 때, 테니스를 할지/말지 두가지로 분류하는 문제를 통해 feature vector의 예시를 들어보면, Day1의 날씨에 관한 특징 4가지를 이용해 vector를 만들면 4-dimension의 vector가 된다. 이렇게 feature engineering을 거친 데이터 set을 4D공간(space)에 뿌려놓고, 이 데이터들을 분류하는 방법인 K Nearest Nei..
Decision tree(의사결정나무) 원리 분류(classification)과 회귀(regression)문제를 풀기 위한 다양한 종류의 머신러닝 모델이 존재한다. 단일모델을 사용하는 대신 여러 모델을 특정방식으로 조합하면 성능이 더 나아지는 경우가 있다. ​ 1)위원회방식(committees): L개의 서로 다른 모델들을 훈련해서 각 모델이 내는 예측값의 평균을 통해 예측을 시행하는 방식 2)부스팅방식(boosting): 여러모델을 순차적으로 훈련하는데, 각 모델을 훈련하기 위한 오류함수는 그 이전 모델결과에 의해 조절 3)여러 모델 중 하나의 모델을 선택해서 예측을 시행하는 방법 ex)decision tree(의사결정트리) ​ 오늘은 이 중에서 decision tree에 대해 알아보도록하자. Decision tree란? 우리가 알고있는 머신러닝..
SVM(Support Vector Machine) 원리 어떠한 '분류'라는 문제를 풀기 위해 패턴 인식 분야는 꾸준히 발전하였다. 가장 오랜 역사를 가진 통계적 분류방법에서 출발해서 신경망이 개발되었고 트리분류기, 은닉마코프모델등이 개발되었다. 이런 상황에서 SVM이 등장하여 주목받았다. ​ SVM은 기존의 분류방법들과 기본원리가 크게 다르다. 신경망을 포함하여 기존의 방법들은 분류 '오류율을 최소화'하려는 목적으로 설계되었다. 하지만 SVM은 한 발짝 더 나아가 두 부류 사이에 존재하는 '여백을 최대화'하려는 목적으로 설계되었다. SVM이란 무엇인가? 기계학습 분야 중 하나로 패턴인식, 자료분석을 위한 지도학습 모델분류와 회귀분석을 위해 사용한다. ​ 두 카테고리 중 어느 하나에 속한 데이터 집합이 주어졌을 때, 주어진 데이터집합을 바탕으로 새로운 데이터가..
[PyTorch] Tensor 자르기/분리하기: chunk함수 Chunk함수란? chunk함수는 tensor를 쪼개는 함수이다. tensor를 몇개로 어떤 dimension으로 쪼갤지 설정해주고 사용하면된다. output = torch.chunk(input, n = (몇개로 쪼갤지 설정), dim = (어떤 차원에 적용할지)) import torch # type 1 x = torch.chunk(x, n, dim) # type 2 x = x.chunck(n, dim) Chunk함수의 시각화 시각화라고 하긴 거창하지만 내 발그림으로 이해해보자. 내 상황을 좀 설명해보면 나는 마이크 여러개에서 얻은 신호중에 첫번째 신호만 꺼내서 처리하고 싶은 상황이다. ​ 음성의 길이는 T이고 64000 sample이 존재한다. 그리고 microphone개수가 6개여서 ch(channe..
[PyTorch] view, reshape, transpose, permute함수의 차이와 contiguous의 의미 (본 포스팅은 이 글 번역 + 마지막에 제 생각을 덧붙였습니다.) PyTorch는 tensor의 type(형)변환을 위한 다양한 방법들을 제공하고 있다. 몇몇의 방법들은 초심자들에게 헷갈릴 수 있다. 그래서 view() vs reshape(), transpose() vs permute() 에 대해 얘기해보고자 한다. view() vs reshape() view()와 reshape() 둘 다 tensor의 모양을 바꾸는데 사용될 수 있다. 그러나 둘 사이에 약간 차이가 있다. (** 둘 중 어떤 함수를 쓰더라도 데이터의 구조가 변경될 뿐 순서는 변경되지 않는다.) view() 는 오랫동안 지속된다. 이 함수는 새로운 모양의 tensor를 반환할 것이다. 반환된 tensor는 원본 tensor와 기반이 되는..