앗! 광고가 차단되었어요!

글 내용이 방문자께 도움이 되었다면, 광고 차단 프로그램 해제를 고려해주세요 😀.

전공 정리/인공지능 (Coursera)

01. Introduction to Machine Learning

this-gpa 2020. 7. 2. 00:19

머신러닝과의 첫 만남

대학원의 인공지능 분야에 진학하기 위해, 나는 코세라의 머신러닝, 뉴럴 네트워크에 대한 강의를 듣기로 결심했다. 그리고 한 달 좀 넘는 시간 동안 앤드류 응 교수님의 머신러닝 수업과 심층 코스 중 미니 수업 2개를 수료했다.

 

대학시절부터 계속 인공지능이 중요하고 매우 인기 있는 분야라고 들었지만, 직접 공부한 것은 이번이 처음이었다. 그래서 혹시 머신러닝을 처음 공부하는 분, 결심한 분을 위해 이 분야의 느낌을 본문 전에 작성하려고 한다.

 

강의를 듣고서, 슬픈 사실이지만 나는 머신러닝, Neural Network는 정말 피곤한 분야라고 느껴졌다 (그렇다고 흥미롭지 않다는 의미는 아니다). 나는 인공지능이면 이미지 classify도 슉슉 되고 무언가 놀라운 분야라고 생각했는데 실제로 구조를 까 보니 그렇지 않았다. (우리는 모두 속은 거야!)

 

머신러닝은 기반이 수학이다. 선형대수, 미적분과 관련된 지식은 기본이다. 그리고 이러한 신경망도 모두 수학적, 행렬과 관련된 식으로 표현된다. 이 부분이 첫 번째 배신감이 드는 부분이었다. 하지만 강의에서 다루는 정도는 많이 어렵지 않으니 낙담하지는 말자!

 

두 번째는 hyperparameter 개념과 학습하는 부분이었다. 인공지능 분야는 일반적으로 큰 데이터셋을 요구한다. 큰 데이터셋으로 (컴퓨팅 파워에 따라 달라지겠지만) 특정 모델을 트레이닝시키는 작업은 정말 오래 걸릴 수도 있다. 그리고 이러한 학습 속도, 모델의 추측 성능은 hyperparameter, 입력의 정규화 등 다양한 요인에 의해 달라지며 이 요인들을 찾아내는 작업이 필요하다는 사실이다.

 

흥미롭지만, 처음 입문하고 더 깊이 공부하게 된다면 고된 경험을 지나야 될 듯싶다.

(미래의 크루저야 듣고 있니? 학습시키고 다음날 확인해보자!)

 

자료 레퍼런스

이 시리즈의 모든 글은 앤드류 응 교수님의 코세라 강의 자료를 바탕으로 한다.

개인적으로 직접 강의를 듣고 프로그래밍 과제를 수행하는 것을 추천한다.

 

머신러닝이란?

내가 머신러닝이라는 분야를 정의한다면,

데이터셋에서 유의미한 구조를 추출하거나, 데이터셋을 따라 하는 것이라고 생각한다.

더 많은 데이터를 가질수록 더 그럴듯하게 따라 하고, 더 의미 있는 구조를 추출할 수 있을 것이다.

 

위는 개인적인 정의이고 아서 사무엘의 정의는 다음과 같다:

직접(explicitly) 프로그래밍되지 않고 학습할 수 있는 능력을 컴퓨터에 부여하는 분야

 

톰 미셀의 정의도 있지만 엄밀하게 제시하지는 않겠다.

대강 어떤 일(task)에서의 데이터셋/자료를 통해 그 일에 대한 성능이 높아지면 학습을 하는 것이라고 정의했다.

 

머신러닝의 알고리즘

알고리즘은 두 가지로 나눌 수 있다. Supervised learning, Unsupervised learning이다.

 

Supervised learning은 데이터셋에 입력에 대한 출력(정답)이 함께 주어지는 형태이며,

Unsupervised learning은 데이터셋에 입력만 존재하는 형태이다.

 

예를 들어 방의 개수, 평수, 화장실 수 등으로 집 값을 추측하는 모델을 개발한다고 하자.

그렇다면 데이터셋은 실제 세계의 입력(=(방의 개수, 평수, 화장실 수))과 출력(=실제 집값) 부분으로 구성할 수 있을 것이다.

이런 데이터로 모델을 학습시킨다면, 우리는 정답을 알고 있으므로 모델이 정답과 다른 값을 출력한다면 페널티를 주어 바르게 지도할 수 있을 것이다. 이러한 방법이 Supervised learning이다.

 

반면 Unsupervised learning은 출력에 대한 정답이 없다. 이의 경우 가장 많이 나오는 예가 클러스터링이다. SNS 서비스에서 사용자의 정보(입력)를 이용해서 적절한 그룹을 만든다거나, 데이터센터에서 좋은 성능을 위해 어떻게 서버 기기들을 묶을 것인가 의 적용 예가 있다. 또는 여러 개의 음악이 합쳐진 파일에서 각자를 어떻게 추출하느냐의 문제도 생각해볼 수 있다.