인간은 어떠한 자극이 주어졌을 때, 이에 대한 결과를 통해 향후 동일한 자극이 들어왔을 때 어떤 일이 벌어질 지를 예상할 수 있습니다. 이러한 자극들이 많을수록 에측 및 대응 능력은 더욱 향상되고 발전되어 갑니다. 이러한 인간의 학습 원리를 기계에 적용한다면 어떨까요? 이러한 생각을 바탕으로 탄생한 것이 머신러닝입니다.
머신러닝이란,
기계가 일일이 코드로 명시하지 않은 동작을 데이터로부터 학습하여 실행할 수 있도록 하는 알고리즘을 개발하는 연구분야이다.
기존의 컴퓨터는 프로그래머가 코딩한 알고리즘을 기반으로 입력값을 넣어주면 그에 대한 결과값을 도출해주는 방식이었습니다.
머신러닝은 입력값 뿐만 아니라 그에 따른 결과값까지 함께 넣어주면, 컴퓨터가 입력과 출력의 연관관계를 분석하여 새로운 알고리즘을 구현해줍니다. 즉, 컴퓨터 스스로가 프로그래머가 되어 알고리즘을 스스로 짜는 것이죠. 따라서, 학습할 수 있는 샘플 (입력과 출력값)이 많을수록 알고리즘의 성능은 더 향상됩니다.
예를 들면, 우리가 많이 사용하는 유튜브 추천 알고리즘이 머신러닝의 한 예로 설명될 수 있지요. 유튜브의 추천영상들은 우리가 유튜브를 처음 시청할 때와 달리 시간이 지남에 따라 시청횟수가 늘어나고, 구독, 좋아요, 알림 회수가 늘어날 수록 내가 좋아할만한 영상들이 추천리스트로 많이 잡히게 되는 것을 볼 수 있습니다. 이 외에도 머신러닝은 거래 시스템에서 사기거래를 감지하기 위해, 트레이딩 자동화, 에너시 수요 예측, 쇼핑 추세 등 다양한 분야에서 활용되고 있습니다.
머신러닝은 크게 두가지 유형으로 학습을 진행합니다.
입력과 출력 데이터를 기반으로 모델을 학습하는 지도학습 (supervised)과 입력데이타를 기반으로 패턴을 찾아내는 비지도학습 (unsupervised) 학습으로 분류됩니다.
입력값과 출력값을 주는 지도학습은 분류와 회귀 두 가지로 분류됩니다.
분류의 대표적인 예는 스팸메일 구분입니다.
우리가 이메일을 수신했을 때, 스팸메일로 판단되는 것에 대해 스팸메일 신고버튼을 클릭합니다. 또한, 정상 메일인데 스팸메일함으로 분류된 경우 스팸메일이 아니라고 클릭해주기도 합니다. 이와 같은 과정이 지속적으로 반복될수록 우리의 이러한 행동 패턴은 점차 줄어들게 됩니다. 이것은 컴퓨터가 수많은 메일에 대해 정상메일과 스팸메일을 분류하는 과정에서 지속적인 학습을 통해 인간의 손이 덜 가도록 성능이 개선된 것입니다.
이러한 분류를 가능하게 하는 알고리즘으로 SVM(Support Vector Machine), Boosted, Bagged, Decision Tree, K-nearest neighbor, Native Bayes, logistic regression, neural networks 등이 있습니다.
분류의 출력값이 Yes or No 의 형태이었다면, 회귀는 출력의 결과값이 다양한 숫자값인 경우를 말합니다.
중고차 가격은 주행거리, 연식, 브랜드, 사고 이력 등의 요소로 가격이 책정이 됩니다. 기존의 거래된 중고차의 주행거리, 연식, 브랜드, 사고 이력 등 가격에 영향을 줄만한 요소들을 입력값으로 그에 따른 거래가격을 출력값으로 하여 기계 학습을 시킨다면, 신규로 매몰로 나온 차량의 예상 판매가격을 예측할 수 있게 될 겁니다.
이러한 회귀기법 알고리즘으로는 Linear Regression, non-linear Regression, Boosted, Bagged, Decision Tree 등이 있습니다.
입력데이타만으로 학습을 진행하는 비지도 학습은 데이터의 숨겨진 패턴이나 고유의 구조체를 찾아내는 과정을 말합니다.
대표적인 비지도학습의 알고리즘으로 클러스터링이 있습니다. 네이버의 뉴스 검색 결과를 보면 메인 주제의 뉴스에 서브카테고리로 연관성이 있는 뉴스들이 묶여서 검색이 되지요. 입력된 많은 뉴스들로부터 상호 연관성을 계산하여 비슷한 뉴스를 묶어서 그룹핑 해주는 방식도 머신러닝을 이용한 방법이라고 할 수 있습니다.
이러한 알고리즘에는 k-means 및 k-medoids, 계층적 클러스터링, Gaussian 혼합 모델, Hidden Markoy 모델 등이 있습니다.
또 다른 비지도학습의 범위로 강화학습이 있습니다.
자율주행차가 올바른 위치에 주차하도록 학습하는 과정을 보면, 주변 장애물과의 거리를 판단하여, 차량내의 카메라, GPS, 라이다 등 각종 센서의 관측값을 사용하여, 운전, 제동 및 가속 명령을 수행합니다. 이를 통해 수십번의 시행착오를 겪으며, 차량의 주차를 반복해서 시도합니다. 주차가 얼마나 올바르게 되었는지 적합성 평가를 통해 자율주행 차량의 알고리즘은 점점 개선이 됩니다. 이 후 자율주행 차량은 좀 더 정확하고 빠르게 주차가 가능해집니다.
이러한 알고리즘에는 신경망 아키텍처, 하이퍼파라미터 조정 및 보상신호 형성 등이 있습니다.
'IT 개발자의 창고' 카테고리의 다른 글
ML 프로젝트 수행 시 allocate memory Error (1) | 2022.07.18 |
---|---|
아나콘다 - 머신러닝 패키지 관리 및 배포 (0) | 2022.07.14 |
파이썬을 이용한 자료분석 (0) | 2022.06.07 |
인공지능, 머신러닝, 딥러닝 무엇이 다른가? (0) | 2022.06.01 |
구글 colab을 이용하여 Web에서 Python 실행하기 (0) | 2022.05.18 |