티스토리 뷰

이 글을 포스팅 하기에 앞서 텐서플로우의 기본적인 개념이나 아키텍쳐 등과 기본 자료형에 대하여 먼저 포스팅 하였다. 

어찌되었건 텐서플로우는 구글에서 제공하는 머신러닝의 라이브러리이고 이를 활용하려면 어쨌든 머신러닝의 개념을 알아야 한다. 지금부터 인공지능의 한 분야인 기계학습을 파헤쳐 보자!



기계학습(Machine Learning)이란 무엇인가?


우리는 프로그래밍 언어를 배우면서 자연스럽게 함수의 파트를 지나가게 된다. 함수는 어떤 파라미터 즉, 입력(Input) 값을 전달하면 출력(Output) 값을 제공하는 것이며 반드시 끝나게 되어있다. 라고 배웠을 것이다. 머신러닝도 이와 마찬가지다 그런데 일반적인 함수보다는 조금 더 복잡한 함수라고 생각하면 될 것이다. 두 가지 예를 들어보자.


첫째로, 이메일 스팸필터는 자연어의 처리라던지 텍스트의 분석에 따라 스팸인지 아닌지를 구분하게 된다 하지만 이것에 생각하기에 일일이 프로그래밍 하기에는 너무 많은 규칙이 존재한다. 


둘째로, 자율 주행 자동차를 보자. 여러가지 변수의 상황이 존재하고 이것을 각각 프로그래밍 할 수는 있지만 위와 동일하게 너무 많은 규칙이 존재하게 된다. 



그래서 일일이 프로그래밍 하지 말자라는 생각을 바탕으로 자연스러운 현상에서 자동적으로 배우는 것이 어떨까? 

데이터를 보고 학습을 하는 것! 

이를 1959년에 아서 사무엘(Arthur Samuel) 이란 분이 말씀하신 기본 아이디어에서 출발하게 된다. 생각보다 머신러닝의 개념은 엄청 오래되었다 :( ... (너무 늦게 알아버린 나...)


결론적으로 머신러닝은 데이터를 보고 학습을 하는 것 즉, 경험을 통해서 다른 비슷한 유사한 일을 진행할 때 더 효율적으로 처리할 수 있도록 시스템의 구조파라미터를 바꾸는 것을 의미한다.



간단하게 예를 들자면 아래와 같은 일이다.


 입력

일 

출력 

 글자(텍스트)

문자 인식 

정확도 

사진 

영역 식별 

정확도 

이메일 

스팸 여부 판단 

정확도 


글자나 사진과 같은 경우는 단연 픽셀의 값이 들어올 것이다. 픽셀 정보를 기반으로 어떤 입력 데이터를 분석하여 머신 러닝 데이터 모델은 이의 여러 픽셀 정보의 학습에 따라 파라미터를 조정하여 학습의 효율(성능)을 높일 것이다. 


이러한 머신러닝의 종류에는 4가지가 있다.

- 지도학습 (Supervised Learning)

- 비지도 학습 (Unsupervised Learning)

- 반지도 학습 (Semi-supervised Learning)

- 강화 학습 ( Reinforcement Learning)


대표적으로 지도학습과 비지도 학습에 대하여 알아볼 것이다!



지도학습(Supervised Learning)


지도학습은 다른 말로 감독학습이라고도 부른다. 

일반적으로 입력 데이터와 출력 데이터를 나타내는 하나의 데이터 셋(Data Set) 을 가지고 새로운 입력 데이터를 받았을 때 출력 데이터를 예측하는 방법이 기본 아이디어이다.



예를 하나 들어보자면,

image source : https://medium.com/@jack.glendenning/




위와 같이 입력 데이터(사진의 픽셀 정보)를 주고 이 이미지는 개, 고양이다 라고 이미지에 레이블링을 한다. 

(컴퓨터는 픽셀의 수치적인 정보만 받을 뿐 무엇인지 전혀 알지 못한다)  

이와 같이 우리는 Training Data Set 의 정보를 주고 새로운 이미지를 넣었을 때 결국 개인지 고양이를 구별하는 어떤 모델을 만들고 싶을 것이다.

이와 같이 지도학습에서 사용하는 트레이닝 데이터 셋의 정보는 문제와 답의 한 쌍으로 이루어진 데이터를 나타낸다.


즉, 그래프 상으로 표현했을 때 

X축은 데이터의 특성을 나타내는 어떤 숫자의 나열 또는 다차원 배열의 형태이며 

Y축은 그 데이터와 맵핑되는 레이블일 것이다.

결국 지도학습은 분류(classification)회귀 분석(regression analysis) 를 활용한 것이다.


다시한번 예제로 돌아가자! 이번에는 시험의 성적을 예측하는 시스템을 만들어 본다고 하자.

( 해당 예제는 유투브의 김성훈 교수님, 모두를 위한 딥러닝 에서 발췌한 것이다. 앞으로 교수님의 많은 도움을 활용할 것이다! 나는 아직 학부생 나부랭이니깐...-_- 정말 교수님께 경의를 표한다!!)


여기서도 마찬가지로 입력 데이터와 출력 데이터의 한쌍으로 이루어진 아주 간단한(?) 트레이닝 셋을 활용할 것이다.




이와 같이 수치 데이터로 나타냈을 때 사용하는 머신러닝의 모델은 회귀(regression) 의 모델이다.


 X(공부에 투자한 시간)

Y(시험점수) 

10

90 

9

80 

50 

30 


우리는 이러한 데이터를 가지고 학습을 시켰을 때 x=7 즉 7시간 공부했을 때 y의 결과치가 얼마가 나오는지가 궁금할 때가 있을 것이다. 그 결과치를 예측하여 성능이 좋으면 그 모델은 좋은 모델이라고 할 수 있다.



다른 예로는, binary-classification, 둘중에 하나 즉 P/F 로 구분되는 결과치를 제공해줄 때 분류의 모델을 사용한다.


 X(공부에 투자한 시간)

Y(시험점수) 

10

PASS

9

FAIL

PASS 

FAIL


마지막으로, multi-label classification, 은 여러 결정할 수 있는 결과치 (즉 A,B,F,D의 학점을 준다고 가정) 를 제공해 줄 때의 분류 모델을 사용한 것이다.


 X(공부에 투자한 시간)

Y(시험점수에 대한 등급) 

10

A

9

B

D


이를 기반으로 다음 포스팅에서는 regression 에 대하여 집중적으로 다루어 볼 것이다!

다음 포스팅에서 regression에 대하여 설명하고 텐서플로우에서 구현하는 것을 정리해볼 예정이다!


※ 해당 포스팅은 정리의 개념으로 남긴 포스팅이며 조금씩 틀린부분이 있을 수도 있습니다. 지나가다 보시면 댓글로 지적이 나 태클 부탁드립니다.!








반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함