머신러닝(machine learning)이란?
'머신러닝(machine learning)'이란 간단하게 말하자면, 인간의 학습 능력과 같은 기능을 컴퓨터가 하게 만드는 기술이다.
인간은 다양한 상황을 학습할 수 있다.
시각, 청각, 촉각 등을 이용해 상황을 느끼고 식별할 수 있다.
예를 들어, 눈 앞에 사과가 있다면 사과임을 알 수 있다.
그러나 컴퓨터는 식별 능력이 없다.
컴퓨터에게 "붉은 색일 경우 사과야!" 라고 규칙을 정해주면 컴퓨터도 식별할 수 있다.
하지만 이건 머신러닝은 아님. 머신러닝은 인간이 명확하게 규칙을 정해주지 않는다.
그러니까 사과는 붉은 색이다. 라는 정보를 전달하지 않는다.
그럼 어떻게 식별 능력을 기르냐면 많은 사과 데이터를 학습기라는 프로그램에 전달하는 것이다.
그러면 식별기가 자동으로 "사과는 붉은색 화소가 많구나" 라고 학습한다.
즉, 머신러닝은 미리 준비한 대량의 데이터를 기반으로 데이터가 가진 특성을 학습하는 것이다.
그리고 이러한 특징을 사용해 새로운 데이터가 들어오면 식별기가 무엇인지 판정한다.
머신러닝으로 할 수 있는 것
· 분류(classification) : 주어진 데이터 분류
· 회귀(regression) : 과거의 수치를 기반으로 미래의 수치 예측
· 클러스터링(clustering) : 데이터를 비슷한 집합으로 분류
· 추천(recommendation) : 관련된 데이터 제공
· 차원 축소(dimensionality reduction) : 데이터의 실질적인 특징과 관련 없는 특징 없애기
구체적으로 머신 러닝은 이미지 처리, 음성 처리, 텍스트 처리 등에 사용될 수 있다.
머신러닝의 구조
그렇다고 머신러닝이 무엇이든 할 수 있는건 아니다.
입력된 데이터 기반 계산 처리 + 학습 성과를 출력할 뿐.....
그래서 머신러닝을 사용한다 해도 입력 데이터는 직접 가공해야 한다^^~
그럼 머신러닝의 구조를 살펴보자.
어떤 식품 ●와 ▲라는 두 종류의 성분 데이터가 있다고 하자.
이 데이터를 기반으로 그래프를 그리면 성분이 다르므로 다음과 같이 구분된다.
성분 데이터가 막 섞였다고 치자.
그래서 그래프 위에 표시를 해봤는데 ★ 위치에 그려졌다.
저 ★ 위치에 있는넘은 ●와 ▲ 중 무엇일까?
그냥 보기만 해도 ★은 ●라는 것을 알 수 있다. 근처에 있으니까 당연하지...
이걸 프로그램으로 처리한다면 ●와 ▲ 사이에 식별 경계라는 직선을 긋고 대상이 직선 위에 있는지 아래에 있는지 판단하게 될 것이다.
바로 이렇게....
이걸 Python 프로그램으로 만든다면
def check_food(x, y):
threshold = 1.3 * x # x를 기반으로 구한 식별 경계 위치
if y >= threshold: # 식별 경계 위에 있는 경우
print('이것은 ▲입니다.')
else: # 식별 경계 아래에 있는 경우
print('이것은 ●입니다.')
이렇게 만들어질 것이다.
당연히 실제 머신러닝에서는 식별 경계가 매우 복잡함.
대량의 데이터를 학습해 식별선의 각도와 위치를 계속 조정해 나간다고 생각하면 된다.
머신러닝의 종류
또 머신러닝에는 종류가 있다. 아주 크게 구분하면 '교사 학습' 과 '비교사 학습', '강화 학습'으로 구분된다.
교사 학습(지도 학습) · 데이터와 함께 정답이 주어지며 · 미지의 데이터를 예측함 |
교사 학습(Supervised learning)은 미리 데이터를 기반으로 학습하는 방법이다.
선생님이 문제를 하나하나 알려주는 것처럼 학습한다 해서 교사 학습이라고 부름.
학습을 위해 데이터를 입력할 때 이 데이터가 어떤 것으로 분류되는지 답(레이블)을 함께 전달한다.
아까 봤던 사과 이미지처럼 사과 데이터를 제공하며 '사과'라고 알려주는것도 교사 학습이다.
비교사 학습(비지도 학습) · 정답 데이터가 주어지지 않음 · 미지의 데이터에서 규칙성을 발견함 |
비교사 학습(Unsupervised Learning)은 '출력해야 하는 것'이 정해져 있지 않다는 점이 다르다.
즉, 데이터를 별도의 외적인 기준 없이 자동 분류한다.
성분 분석, 벡터 양자화, 자기조직화 맵 등에 사용되며
데이터의 본질적인 구조 등을 확인할 때 주로 사용한다.
강화 학습 · 행동을 기반으로 정답인지 알려줌 · 데이터에서 최적의 답을 찾아냄 |
강화 학습(Reinforcement Learning)은 현재 상태를 관측하고 행동을 결정하는 문제를 풀 때 사용한다.
교사 학습과 비슷하지만, 완전한 답이 제시되지 않는다는 것이 다르다.
강화 학습에서는 에이전트(행동 주체)와 환경(상황 또는 상태)가 등장한다.
에이전트는 환경을 광찰해서 이를 기반으로 의사결정을 한다.
이 때 환경이 변화하면 어떤 이득이 에이전트에게 주어진다.
그래서 에이전트는 더 많은 이득을 얻을 수 있는 방향으로 학습하게 된다.
저것만 봐선 잘 몰겠으니 고양이가 사료를 먹는 과정을 예로 들어보자면
에이전트 : 고양이
환경 : 사료 자동 지급기
라고 하자.
고양이는 사료 자동 지급기 안에 사료가 들어 있다는 것을 발견한다!
하지만 단순히 가까이 간다는 것 만으론 냄새밖에 못 맡을 것이다.
그래서 고양이는 사료를 얻기 위해 다양한 행동을 하기 시작한다.
어느 순간 고양이가 자동 사료 지급기의 스위치를 눌러 사료가 나왔다. -> 이득
그렇다면 고양이는 지급기에 몸을 비비면 사료가 나온다는걸 깨달았다.
그리고 이를 반복하다가 붉은 버튼을 슬쩍 누르기만 하면 사료가 나온다는 것을 최종적으로 깨달았다.
-> 고양이는 여러 행동 반복을 통해 최선의 행동을 학습했다.
이를 컴퓨터로 구현한 것이 강화 학습이다.
딥러닝이란?
딥러닝은 머신러닝의 한 분야이며, '뉴럴 네트워크(신경망)'을 개선한 것이다.
신경망
그렇다면 신경망은 무엇일까? 신경망은 사람의 신경을 모방해 만든 네트워크 구조이다.
이를 통해 컴퓨터가 학습 능력을 갖게 해 문제를 해결하는 접근 방법이다.
인간의 뇌에는 수많은 신경 세포(뉴런)가 있다. 하나의 뉴런은 다른 뉴런으로부터 신호를 받고, 또 다른 뉴런에 신호를 전달한다.
뇌는 이런 신호의 흐름을 통해 정보를 전달한다.
-> 이를 컴퓨터로 구현한게 신경망이다.
신경망이 3-레이어 이상 쌓이면 일반적으로 '심층 신경망(DNN)'이라고 한다.
이 DNN을 사용한 머신러닝이 딥러닝이다.
딥러닝에서는 대량의 데이터를 학습해 각 뉴런 사이의 연결 가중치를 반복해 조정한다.
퍼셉트론
신경망을 이해하려면 퍼셉트론이라는 인공 뉴런을 알아야 한다.
일단 다음과 같이 입력 레이어와 출력 레이어라는 2개의 레이어를 갖고 있는 단순 퍼셉트론(Simple perceptron)을 살펴보자.
입력(x1, x2, x3) 3개와 출력(y) 1개를 갖고 있다.
각 입력은 0 또는 1을 가질 수 있으며, 출력도 0 또는 1을 가질 수 있다.
그렇다면 예시를 들어서 살펴보자
새로운 티비를 산다면 출력 y = 1, 사지 않으면 y = 0 이라고 하자.
그리고 입력으로 티비를 사야하는 이유를 전달한다.
· 현재 티비를 바꿔야 하는 때인가? (x1)
· 티비 구입을 위한 예산이 충분한가? (x2)
· 현재 사고자 하는 티비가 세일 중인가? (x3)
주의할 점은 위 항목의 결정이 다수결로 되는 것은 아니라는 것이다.
돈이 많은 사람이라면 x2가 문제가 되지 않을 것이고, 티비가 고장난 상태라면 x1이 큰 비중을 차지해야 할 것이다.
그래서 퍼셉트론은 각 입력에 대해 가중치(W)라는 매개변수를 도입했다.
입력 x1, x2, x3에 대해 W1, W2, W3라는 가중치를 넣었다고 치자.
돈이 많은 사람이라면 (W1 = 5, W2 = 2, W3 = 3) 정도의 가중치를,
티비가 고장난 사람이라면 (W1 = 7, W2 = 2, W3 = 1) 정도의 가중치를 넣으면 될 것이다.
이렇게 생각하면 티비를 구입할지 검토하는 프로그램을 다음과 같이 만들 수 있다.
b = 티비 구입의 역치
if (x1 * W1) + (x2 * W2) + (x3 * W3) > b:
# 사기
else:
# 안사기
일케 가중치과 역치에 변화를 주면 의사결정을 명확히 할 수 있음.
긍까 다양한 정보를 고려해서 결정할 수 있게된다.
퍼셉트론을 복잡하게 조합하면 더 복잡한 판단 가능
<정리>
- 머신러닝을 사용하면 다양한 데이터를 활용할 수 있다.
- 머신러닝은 분류, 회귀, 클러스터링, 추천, 차원 축소 등에 사용한다.
- 이미지, 음성, 텍스트 등의 다양한 데이터에 머신러닝을 활용할 수 있다.
- 머신러닝은 수학적 계산을 통해 답을 도출해내는 것이다.
- 딥러닝은 머신러닝의 한 분야이다. 딥러닝 ⊂ 머신러닝
- 신경망을 복잡하게 만드는게 딥러닝이다.
출처 : 파이썬을 이용한 머신러닝, 딥러닝 실전 앱 개발
'컴퓨터 > 머신러닝, 딥러닝' 카테고리의 다른 글
4/21 딥러닝 _Classification- augmentation, Cross-validation, Linear Classification, (0) | 2022.04.21 |
---|---|
4/21 딥러닝_컴퓨터 비전 history (0) | 2022.04.21 |
[Mac] 맥북 m1칩에 XGBoost, lightGBM 깔기 (conda) (0) | 2022.04.15 |
[Mac] 맥북 M1칩에서 tensorflow를 사용할 수 없을 때 (0) | 2022.04.11 |
머신러닝의 과정과 사용할 데이터 만들기 (0) | 2022.03.29 |