머신러닝

생활코딩 머신러닝1을 듣고 (복습 및 정리)

EEEUN 2023. 8. 13. 21:00

 

이 글은 제가 개발 및 공부를 하며 알게 된 내용, 느낀 점 등을 기록하고자 쓰는 글입니다. '생활코딩'의 '머신러닝1' 강의를 들었습니다. 내용에 대한 반박과 피드백은 늘 감사히 받겠습니다.

 

https://opentutorials.org/course/4548

 

머신러닝1 - 생활코딩

수업소개 이 수업은 인공지능을 구현하는 기술인 머신러닝(Machine learning)을 다루는 수업입니다.  수업대상 인공지능과 머신러닝이 궁금한 분들 초등학생부터 어르신까지 누구나 수학과 코딩 때

opentutorials.org

 

기계학습(Machine Learning)

머신러닝은 기계를 학습시켜 인간의 판단을 위임하기 위해 고안된 기술이다. (전염병의 양성판정, 자동번역, 자율주행 등)

머신러닝은 우리의 두뇌가 가진 중요한 기능인 판단능력을 확장해서 우리의 두뇌가 더욱 빠르고 정확하게 결정할 수 있게 돕는 도구이다.

 

머신러닝해보기

https://teachablemachine.withgoogle.com/

이미지, 사운드, 자세를 가지고 머신러닝 모델을 만들 수 있다.
이미지를 첨부하고 Training을 시킨 후, Preview를 통해 머신러닝 모델을 확인할 수 있다.

예를 들어, 손톱을 물어뜯는 사진과 물어뜯지 않는 사진을 넣어 Training시키고 Preview를 본다고 해보자. 손을 물어뜯는 내 모습을 비춘다면, '손톱을 물어뜯음'이라는 결과가 나올 것이다. 이 결과는 머신러닝을 통해 기계가 '손톱을 물어뜯는 것이 무엇인지' 학습한 것이다.

모델(Model)

아이들을 관찰해보자. 아이들은 하루종일 무언가를 만져보고 먹어본다. 아이스크림을 먹으면 '맛있다'라고 판단한다. 돌맹이는 '먹을 수 없는 것'이라고 판단한다. 이 과정에서 '먹을 수 있는 것'과 '먹을 수 없는 것', '맛있는 것'과 '맛없는 것'을 알아낸다.

이러한 과정을 통해 얻게 된 판단력을 '교훈' 이라고 한다. 교훈 덕분에 경험해보지 않아도 그 결과를 예측 혹은 추측할 수 있다.

모델(model) : 머신러닝에서는 학습하며 얻은 '판단력'을 '모델'이라고 부른다.
학습(learning) : 모델을 만드는 '과정'

학습이 잘 되어야 좋은 모델을 만들 수 있고, 모델이 좋아야 더 좋은 추측을 할 수 있다. 또한 추측이 정확해야 좋은 결정을 할 수 있다.

애플리케이션과 프로그램

애플리케이션(application) : 어떤 기능을 부품으로 사용해서 만든 완제품을 ‘애플리케이션’이라고 한다. 한국어로는 ‘응용’이라는 뜻.

다시 말하면 ‘부품을 응용한 것’이라는 뜻이다.
머신러닝 앱같은 경우, 머신러닝의 모델이라는 부품을 용해서 만든 소프트웨어이다.
그런 점에서 머신러닝 애플리케이션이라고 할 수 있다.

프로그램(program) : 시간의 순서에 따라서 동작하고 있는 것. ‘프로그램’이라는 말 속에는 시간', '순서'라는 의미가 포함되어 있다.

과거에 생활코딩에서 음악회 같은 곳에서 시간에 따라서 곡이 연주되는 순서를 프로그램이라고 했다.
그리고 이번 강의에서 만들어본 '손톱 인식 머신러닝 앱'에서도 시간의 흐름에 따라 일이 순서대로 일어난다.

우선 손톱을 깨물었는지 아닌지를 확인한다.
이를 바탕으로 손톱을 깨물었다면
손톱이라는 글씨를 화면에 표시한다.

그리고 “그 손 당장 내려놔!!"라는 말을
스피커로 출력한다.

즉, 시간의 순서에 따라서 동작하고 있는 것이다.
그래서 이것을 ‘프로그램’이라고 한다.

기계가 해야 할 일을 기계가 알아들을 수 있는 방식으로
순서대로 적으면 그것이 프로그램이다.

기계는 그것을 보고 해야 할 일을 순서대로 실행할 것이다.

이런 프로그램을 만드는 일을
‘프로그래밍(programming)’이라고 한다.

프로그램을 만드는 사람을
‘프로그래머(programmer)’라고 한다.

위의 표를 자세히 보면 개체를 행에 적고, 그 개체의 특성을 열로 구분하고 있다.

데이터 산업에서는 행과 열이라는 표현 대신 조금 어려운 표현을 사용한다.

- 행(row)

개체(instance)
관측치(observed value)
기록(record)
사례(example)
경우(case)

- 열(column)

특성(feature)
속성(attribute)
변수(variable)
field

현업에서는 동일한 대상을 여러 용어로 표현하고, 맥락에 따라서 이런 표현들을 섞어서 사용하기 때문에 데이터 분야가 어렵게 느껴질 수 있다.

변수(Variable)

변수라는 말은 표에서 사용할 수 있다.

누군가 표에 대해서 이야기하면서 변수를 언급하면, 그것은 열을 이야기하는 것이다.


위의 표에서 온도는 날짜에 따라 달라지고 있다. 고로 '온도'는 '변수'라고 할 수 있다.

독립변수와 종속변수

독립변수 = 원인이 되는 열
종속변수 = 결과가 되는 열

정리해보자

이제 표를 만났을 때, 우리의 머릿속에는 이 생각이 제일 먼저 떠올라야 한다.

"상관관계"

‘이 표에 있는 특성(열)들 중에서 서로 상관있는 특성은 무엇이지?’

서로 상관있는 특성들은 이런 징후가 있다.
한쪽의 값이 바뀌었을 때, 다른 쪽의 값도 바뀐다면, 두 개의 특성은 ‘서로 관련이 있다’고 추측할 수 있다.

그리고 이 특성들을 우리는 독립변수와 종속변수로 나누어 생각할 수 있을 것이다.

머신러닝의 분류

머신러닝에는 많은 분야가 있다. 그림 속 3가지(지도학습, 비지도학습, 강화학습) 외에도 더 많은 분야가 있지만, 가장 대표적인 분야 3가지를 배울 것이다.

지도학습

지도학습 : 데이터로 컴퓨터를 학습시켜서 모델을 만드는 방식

지도학습의 ‘지도'는 기계를 가르친다(supervised)는 의미이다.

  • 지도학습은 '문제집을 푸는 것'과 비슷하다.
문제집에는 문제가 있고, 정답이 있다.
문제와 정답을 비교하고 맞추다 보면 문제풀이에 익숙해지게 된다.
이후에 비슷한 문제를 만나면 오답에 빠질 확률은 점점 낮아진다.
  • 지도학습은 '역사'와도 비슷하다.
역사에는 과거에 있었던 사건이 원인과 결과로 기록되어 있다.
역사를 알면 어떤 사건이 일어났을 때, 
그것의 결과로 어떤 일이 일어날지를 예측할 수 있게 된다.
마찬가지로, 지도학습은 과거의 데이터로부터 학습해서
결과를 예측하는 데에 주로 사용된다.

회귀와 분류

회귀(Regression) : 예측하고 싶은 종속변수가 숫자일 때 보통 회귀라는 머신러닝의 방법을 사용한다.
분류(Classification) : 예측하고 싶은 종속변수가 문자일 때 보통 회귀라는 머신러닝의 방법을 사용한다.

앞으로 어떤 문제를 만났는데 그 문제에서 예측하고 싶은 결과가 '숫자'라면 '지도학습의 회귀'로 해결하면 된다.

아니면 그 문제에서 추측하고 싶은 결과가 '이름' 혹은 '문자'라면 '지도학습의 분류'로 해결하면 된다.

비지도학습

비지도학습 : 무언가에 대한 관찰을 통해 새로운 의미나 관계를 밝혀내는 방식

비지도학습에 속하는 도구들은 대체로 기계에게 데이터에 대한
통찰력을 부여하는 것
이라고 이야기할 수 있다.

즉, 누가 정답을 알려주지 않았는데도 무언가에 대한 관찰을 통해 새로운 의미나 관계를 밝혀내는 것이다.

데이터의 성격을 파악하거나 데이터를 잘 정리정돈 하는 것에 주로 사용된다.

군집화와 연관규칙학습

군집화 : 비슷한 행을 그룹핑하는 머신러닝 기법

비지도학습의 '군집화'와 지도학습의 '분류'는 헷갈릴 수 있다.
어떤 대상들을 구분해서 그룹을 만드는 것이 군집화라면,
분류는 어떤 대상이 어떤 그룹에 속하는지를 판단하는 것이라고 할 수 있다.

예를 들어보자.

여러 종류의 고기가 있다.
이 고기들을 '돼지고기','닭고기','소고기' 등 종류별로 나누는 것은 군집화이다.
소고기라는 그룹 안에서 A++,A+,A 등 등급을 나누는 것은 분류이다.

연관규칙학습 : 서로 연관된 특성(열)을 찾아내는 머신러닝 기법

일명 장바구니 분석이라고 불린다.

쇼핑 추천, 음악 추천, 영화 추천, 검색어 추천, 동영상 추천…..
추천이 이름 뒤에 붙은 것들은 거의 다 연관규칙을 이용한 것이라고 보면 된다.

지도학습과 비지도학습의 차이

  • 비지도학습은 탐험적

독립변수와 종속변수의 구분이 중요하지 않다.
데이터만 있으면 된다.

  • 지도학습은 역사적입니다.

그래서 원인인 독립변수와 결과인 종속변수가 꼭 필요하다.

강화학습

강화학습 : 배움이 아닌 직접 경험을 통해 능력을 향상시키는 방식

강화학습은 학습을 통해서 능력을 향상시킨다는 점에서는
지도학습이랑 비슷하다.

차이점은 지도학습이 정답을 알려주는 문제집이 있는 것이라면,
강화학습은 어떻게 하는 것이 더 좋은 결과를 낼 수 있는지를 스스로 느끼면서 실력 향상을 위해서 노력하는 수련(게임)과 비슷하다.

경험을 통해 “더 좋은 답”을 찾아가는 것이다.

강화학습은 일단 해보면서 경험을 통해서 실력을 키워가는 것이다.

그 행동의 결과가 자신에게 유리한 것이었다면 상을 받고, 불리한 것이었다면 벌을 받으며 능력을 향상시킨다.

예를 들어 위의 사진에서는 캐릭터가 장애물을 잘 피하며 동전을 먹는 것이 '상'이고, 장애물에 부딪혀 체력이 깎이는 것이 '벌'이다.


👉 참고한 내용

생활코딩 머신러닝1 - https://opentutorials.org/course/4548