티스토리 뷰
[학습노트]는 학습한 강의 내용을 정리해 둔 글입니다.
해당 글은 K-MOOC [파이썬으로 배우는 기계학습 입문 Plus+] 1주차 강의를 수강하며 정리한 내용입니다.
제 임의로 요약 및 정리를 한 글로 정확한 내용은 아래 링크의 강좌를 수강하시는 것을 추천드립니다.
http://www.kmooc.kr/courses/course-v1:HGUk+HGUP01+2022_T2/about
파이썬으로 배우는 기계학습 입문 Plus+
본 강의는 수강생이 기계학습(machine learning)의 원리를 이해하고, 그 원리를 적용하여 문제를 해결함으로 기계 학습 문제들을 해결하는 코딩 능력을 기를 수 있도록 합니다. 또한 4차 산업 혁명의
www.kmooc.kr
- 기계학습과 관련된 기초 지식이 없어도 수강 가능한 강좌라 추천받아 수강한 강좌입니다.
- 잘못된 내용이 존재할 수 있으며 본 포스팅은 작성자가 듣고 이해한 강의에 대한 요약 정도로만 참고 바랍니다.
1-1. 기계학습 소개
[기계학습 (머신 러닝)은 무엇인가]
두가지 문제가 주어졌을 때 무엇을 푸는가?
문제 1: 계산 - 컴퓨터가 선택
문제 2: 물체 인식 - 사람이 선택
컴퓨터가 잘하는 것과 못하는 것은 무엇인가?
잘하는 것 : 컴퓨터는 덧셈과 뺄셈을 빠른 속도로 연산한다.
못하는 것 : 만들어진 형태로만 작동한다.
정해진 규칙 이외의 입력이 들어왔을 때 이를 다룰 수 없었다.
고양이의 모습이 변하면 전부 다르게 인식했었다.
기계 학습이 시작되면서, 컴퓨터도 고양이를 볼 수 있게 되었다.
다만 많은 자료를 사용해서 컴퓨터를 학습시켜줘야 한다!
1천 만장의 인터넷 이미지에서, 고양이를 인식하는 것에 컴퓨터 1000대가 필요했었다.
- 컴퓨터가 스스로 학습해서 고양이를 구별해 낸 사건
[기계 학습의 개념] - 기존 프로그램과의 차이
전통적인 프로그램 : 정해진 규칙에 따라서만 동작, 프로그래머가 규칙을 정해주어야 한다. / 새로운 규칙의 경우 프로그램의 수정 필요
기계 학습 : 기계가 스스로 판단할 능력을 만듦, 프로그래머의 프로그램 수정 불필요하다. / 자료 축적이 필요
기계 학습은 인공 지능이라는 꿈에 다가갈 수 있는 방법
[기계학습의 정의]
기계 학습
- 컴퓨터가 배울 수 있는 능력, 즉 프로그램으로 정의하지 않아도, 컴퓨터가 스스로 학습하여 실행할 수 있는 능력에 대한 연구 분야
- 인공지능의 한 분야, 데이터를 이용하여 학습시키는 방법론
인공 지능
- Artifical Intelligence - AI
딥러닝
- 지난 10년간 급격히 발전한 분야, 심화 학습, 심층 학습
- 다층적인 인공 신경망 알고리즘을 이용한 기계학습의 한 종류
포함 관계
- 인공지능 > 기계학습 > 딥러닝
[기계학습의 종류]
지도 학습
- 자료로 학습하고 예측
- 분류(Classification)와 회귀 (Regression)
이미지와 레이블(이미지가 어떤 의미인지 알려 주는 것)을 사용해서 공부를 해서 시험을 푸는 것
사물을 인식하거나 지금까지의 날씨를 분석해서 예측하는 것이 지도 학습
분류는 문제와 답을 주어서 패턴을 익히게 하는 것
- 경험해보지 못한 새로운 패턴을 예측하도록 하는 것
회귀는 실수 값을 예측 하는 것
- 사진 속 인물의 몸무게를 예측하는 것
- 공부 시간에 따른 퀴즈 점수 예측
비지도 학습
- 레이블이 없음
- 스스로 학습해 가는 것
- 데이터 자체에서 패턴을 찾아내는 학습 방법
- 고양이 판별, 신문 분야의 그룹핑, 레이블 없이 자동적으로 분류하게 하는 것
강화 학습
- 행동에 대한 보상을 극대화
- 바둑, 게임
- 행위가 최종 결과에 어떤 영향을 주었는지
행동의 주체 <- 상태 <- 환경
<- 보상 |
| |
| |
------------>행동------->
- 이세돌/알파고의 경우가 대표적 예시
좋은 수를 두었을 때 보상을 받으면서 학습을 강화함
영국의 딥마인드
- 벽돌 부수기 게임
- 주어진 정보는 점수와 픽셀 디스플레이뿐
- 게임의 규칙을 모르고 시작
- 처음 10분은 공을 맞추지도 못함
- 한쪽 벽만을 공략해 최대한 한 번에 많은 점수를 내는 방법으로 발전
- 구글이 해당 회사를 인수하고, 2년 후 이세돌 기사와 대국을 함
학습 정리
- 기계학습의 개념 학습
: 컴퓨터가 스스로 배울 수 있는 학습능력을 갖추게 하는 것
- 기계학습의 종류 정리
: 지도학습, 비지도학습, 강화학습
1-2. 기계학습 개발환경
강의에서 사용할 기계 학습 개발 환경을 이해
- 무엇이 필요하고, 왜 해야 하는지 이해
[왜 파이썬인가?]
- 간단하고 배우기 쉬움
- 프로토타입을 만들기 쉬움
- 자연어 처리, 이미지 시각화 등을 위한 다양한 편의 라이브러리 지원
- 딥러닝 프레임워크의 파이썬 API를 제공함
[파이썬 버전과 튜토리얼]
- 3.x 버전을 사용해야 함 (2.7버전이 있는데 3.4등의 버전 사용 필요)
[파이썬 라이브러리]
- 라이브러리 : 특정한 기능들을 미리 만들어 묶어 둔 것
- 표준 라이브러리, 외부 라이브러리, 개인모듈(개별 개발자가 만든 것)
표준 라이브러리 : math, random, pickle,csv,os,time,urllib 등등
외부 라이브러리 : numpy - 다차원 배열/행렬을 생성하고 다룸, matplotlib - 과학 계산용 그래프 라이브러리
이 외에도 다양한 '기계학습용' 외부 라이브러리가 있음
pandas : 데이터로부터 학습자료를 읽고 쓰고, 전처리함
scipy : 다양한 과학적 계산을 위한 모듈. scientific python의 약자
scikt-learn : 기계학습에 필요한 다양한 알고리즘 제공
[기계학습 개발 프레임워크]
TennsorFlow (텐서플로)
- 구글이 오픈소스로 개발
- 핵심기술은 C++로 작성
- 우리가 사용하는 프론트 엔드는 파이썬으로 작성
- GPU를 사용할 수 있는 장점이 존재
- 시각화 툴인 TensorBoard 제공
Keras (케라스)
- 구글의 개발자가 만든 텐서플로를 기반으로 한 프레임 워크
- 빠른 시간 안에 프로토타입을 만들 때 사용
- 직관적인 API
- 현재 텐서플로와 통합되어 텐서플로 안에서도 사용 가능
PyTorch (파이토치)
- 최근 인기를 끌고 있음
- Lua로 개발된 Torch를 파이썬 API로 개발
- 디버깅이 쉬운 직관적인 코드로 작성
- 동적 그래프 : 언제든지 데이터에 따라 모델 조정 가능
우리가 사용할 IDE : Jupyter Notebook (주피터 노트북)
- IPyrhon (Interactive Python)의 장점을 모두 물려받음
- 웹 브라우서에서 코딩과 문서 작성 모두 가능
- 최고의 파이썬 개발환경
우리가 사용할 도구 정리
- Python 3.x
- Numpy
- Matpolitlib
- Jupyter Notebook
자동차를 운전하는 게 아니라, 자동차를 만드는 과정을 해보는 것이 목적
- 기계 학습의 코어 엔진을 만들어 보자
아나콘다 배포판 설치와 확인
아나콘다 - AnaConda
설치 옵션 (윈도우의 경우) : 공용으로 설치 권장(한글 문제 때문), PATH 설정 체크 (권장, 콘솔 사용 위해)
파이썬 설치(버전) 확인 : python --version :pip --version
[주피터 노트북 사용하기]
1. 실행 : 아나콘다 네비게이션 앱을 사용하거나, 콘솔에 jupyter notebook 입력
2. 첫 화면 (대시보드)에서 주피터 노트북 파일 생성
- 우 상단 New 버튼을 누르고 Python 3 선택
3. In [1] : 라 보이는 곳은 셀, 셀에 1+2+3을 입력하고, Run 클릭 시 6 출력됨
셀 안에 코딩을 하고 ctrl + enter, shift + enter를 눌러 셀을 실행
4. 아래의 코드 입력 및 출력 확인
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.arange(0, 6, 0.1)
y = np.sin(x)
plt.plot(x,y)
plt.show()
- 저는 해당 부분에서 커널이 죽는 문제가 발생했습니다.
맥북 기준 터미널에 아래 내용을 입력하여 matplotlib을 설치하여 문제를 해결했습니다.
python -m pip install -U pip
python -m pip install -U matplotlib
5. 코드셀과 마크다운 셀이 있음, 마크다운 셀을 사용해 보자 (Code -> Markdown 선택)
마크업 랭귀지 : 웹 페이지 만들 때 사용
마크다운 : 마크업의 장점도 살리고, 평이한 문장처럼 원문의 가독성을 높여 사용하는 것
여러 단축키가 존재
m : 마크다운으로 전환
y : 코드로 전환
dd : 셀 삭제
x : 셀 잘라내기
c : 셀 복사
s : 파일 저장
Shift + m : 아래 셀과 병합
Enter : 편집 모드로 진입
l : 코드 셀의 라인에 번호매김하거나 숨기기
1-3. 행렬
행렬이 고등학교 강의에 존재하지 않아서 진행하는 강의
[왜 행렬인가]
연립방정식 / 행렬 방식
- 행렬은 연립방정식에서 계수와 변수를 분리하여 쓰면 어떨까라는 생각에서 나옴
기계 학습에서는 많은 학습 자료를 다뤄야 하고, 이때 필수적으로 행렬이 필요
- 간결한 표기
- 실수 감소
- 컴퓨터에 적합한 방식
[용어]
스칼라(0차원) - 크기 : 크기만 있고 방향이 없는 값 : 질량, 부피, 거리 등의 사칙 연산이 가능한 숫자
벡터(1차원) - 크기와 방향 : 기계 학습에서 1차원 배열을 백터라 간주 : 속도, 가속도, 운동량, 전기장
행렬(2차원) - 2차원 배열
텐서 - 임의의 N차원 배열
행(row) - 가로
열(column) - 세로
행렬 안의 각각의 숫자를 원소라고 함
행 벡터 - 1 * M 행렬 (1 행, M 열)
열 벡터 - M * 1 행렬 (M 행, 1열)
행 벡터인지 열 벡터인지 언급이 없다면 기계학습에서 대부분 열 벡터
크기가 같다는 것은 앞 행렬의 열과, 뒷 행렬의 행이 같은 것
행렬의 곱 A * B = C
(M * N) * (N * P) = (M * P)
(아래에 대한 자세한 내용은 필요시 별도 학습 하는 것이 좋을 듯)
내적, 외적
결합/분배/교환 법칙
행렬의 덧셈, 뺄셈
전치 : 행과 열의 인덱스를 바꾼 것 (대각선 기준으로 위치 바꾸는 것)
[단위행렬]
주 대각선이 모두 1이고 나머지는 모두 0인 행렬
I = 1 0 0
0 1 0
0 0 1
즉 텐서플로는 다차원 배열을 말하는 것
다음 강의 보기 :
[2주차 학습노트 - 넘파이와 뉴론 기초] 파이썬으로 배우는 기계학습 입문+
[2주차 학습노트 - 넘파이와 뉴론 기초] 파이썬으로 배우는 기계학습 입문+
[학습노트]는 학습한 강의 내용을 정리해 둔 글입니다. 해당 글은 K-MOOC [파이썬으로 배우는 기계학습 입문 Plus+] 2주차 강의를 수강하며 정리한 내용입니다. 제 임의로 요약 및 정리를 한 글로
ideaspread.tistory.com
'학습노트 > 인공지능' 카테고리의 다른 글
[3주차 학습노트 - 인공뉴런 동작원리] 파이썬으로 배우는 기계학습 입문+ (0) | 2023.02.21 |
---|---|
[2주차 학습노트 - 넘파이와 뉴론 기초] 파이썬으로 배우는 기계학습 입문+ (0) | 2023.02.11 |
- Total
- Today
- Yesterday
- 유니티
- VRchat
- 맵 제작
- UE4
- 언리얼
- unity
- 언리얼 배우기
- 브이알쳇
- 주피터 노트북
- 인공지능
- 학습노트
- 머신러닝
- 기계학습
- 수식
- 파이썬
- KMOOC
- 아나콘다
- UE5
- 언리얼엔진5
- latex
- 세팅
- VCC
- VRChat경로설정
- 정보와 지식
- vrchat creator companion
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |