2020.코딩일지

인공지능을 위한 머신러닝 알고리즘 본문

algorithm

인공지능을 위한 머신러닝 알고리즘

개발하는라푼젤 2021. 7. 19. 03:58
728x90

인공지능을 위한 머신러닝 알고리즘

머신러닝 그래도 구면이라 다행이다ㅎㅎ
알고리즘은..계속 듣다보면 언젠간 알게되겠지.. 하하하



강좌정보 Tacademy강좌링크
학습내용 인공지능의 개념을 이해하여 머신러닝과 딥러닝을 알 수 있습니다.
머신러닝과 딥러닝의 기본 개념과 적용 사례, 알고리즘 실습을 통해 이해할 수 있습니다.
지도학습과 비지도 학습의 이론과 알고리즘을 이해할 수 있습니다.
Weka와 Theano및 Keras를 통한 실습으로 머신러닝, 딥러닝 알고리즘을 구현할 수 있습니다.
강사 김경민
학습기간 2021.05.10~2021.05.22 + 평가이수완료
학습시간 07:01:42
강의목록 [1강] 머신러닝 개요
[2강] 선형 회귀 모델
[3강] 로지스틱 회귀 모델
[4강] 결정 트리
[5강] 서포트 벡터 머신
[6강] 신경망
[7강] 역전파
[8강] 비지도 학습
[9강] 컨볼루션 신경망
[10강] 재현 신경망
[11강] 메모리 네트워크
[12강] 딥러닝 응용사례
[13강] Weka를 이용한 머신러닝 실습
[14강] Theano를 통한 머신러닝 구현
[15강] Keras를 통한 딥러닝 구현 및 실습
GitHub None

# [1강] 머신러닝 개요

인공지능과 머신러닝

머신러닝은 인공지능을 구현하기 위한 하나의 방법
지식을 구현하기 위한 두 가지 대립적 방법

  • 지식공학(합리주의자/이성주의자): 지식을 사람이 직접 컴퓨터에게 제공
  • 머신러닝(경험주의자): 컴퓨터가 데이터로부터 지식을 직접 학습(현재의 딥러닝)

머신러닝 알고리즘의 분류

지도학습(Supervised Learnig): 학습 데이터마다 레이블을 가지고 있음
분류(Classification):이산적(Discrete)일때
회귀(regression):연속적(Continuous)일때
추정(Estimation):확률일때
특징1 딥러닝이 대표적인 예
특징2 사용할 수 있는 데이터에 한계가 있음
특징3 데이터를 생성하는데 비용이 많이 듦

비지도학습(Unsupervised Learning): 학습 데이터마다 레이블을 가지고 있지 않음
입력만 있고 출력은 없는 상태.
클러스터링이 주로 사용됨
지도학습에 비해서 학습하기 어려움
유튜브 추천
비디오 항목 자동 분류기

준지도학습(Semi-Supervised Learning): 학습 데이터가 약간의 레이블을 가지고 있음

강화학습(Reinforcement Learning): 최종 출력이 바로 주어지지 않고 시간이 지나서 주어지는 경우
바둑: 승/패의 결과
게임, 미로찾기
대화-상점에서 주문, 고객상담 등..
좋은대학에 입학하기 위한 전략은?
축구를 잘하는 로봇을 만들려면?

머신러닝의 구성요소

데이터준비: 훈련/검증/테스트 데이터 집합으로 분리
모델 표현: 기호/신경망/유추/베이지안/유전 기반 알고리즘 존재
모델 평가 방법: 정확도/에러제곱/우도 등 각 상황에 맞는 평가 방법 선택

[2강] 선형 회귀 모델

선형회귀모델
한 개의 종속 변수와 다수의 설명 변수들 사이의 관계를 선형 방정식으로 모델링
계단함수를 사용하여 선형문제를 해결한다.

선형 문제로는 풀리지 않는 문제들
종속변수와 설명변수 사이 비선형 관계 존재

[3강] 로지스틱 회귀 모델

로지(logit)함수

오즈(odds)
어떠한 사건의 확률이 p일 때, 그 사건의 오즈는
$$odds = p / (1-p)$$
로짓은 오즈의 자연로그
$$logit(p)=In(odds)=In(p/(1-p))$$

로지스틱 회귀 모델

(시그모이드함수) 0 또는 1
오즈의 로그(로짓)은 설명변수 x와 선형적인 관계
일반적 선형 회귀 문제처럼 접근 가능
종속변수 p와 X는 비선형 관계

로지스틱 회귀 모델의 파라미터 추정

우도함수 사용
ex) 동전 던지기 문제

[4강] 결정 트리

의사 결정 트리와 분류 문제

의사결정 트리는 구조의 분류기
노드: 단일 특성에 대해 데이터를 테스트
말단 노드: 클래스를 나타냄(데이터의 개수)
엣지: 하나의 특성 값을 분류
경로: 최종 분류 결정을 하기 위한 룰들의 논리합

분류(classification)
특성 값, 클래스 정보를 학습한 뒤, 새롭게 주어지는 테스트 데이터에 특성 값만으로 클래스를 예측하는것
ex) 날씨 정보를 바탕으로 상대방의 데이트 허락 Yes or No

결정 트리 구축 원칙

정보 획득량은 결정 트리 구축 과정에서 테스트할 후보 특성의 순서를 결정할 때 사용
각 노드에서 테스트할 특성 선택 : 분류할 떄 가장 유용한 특성 순서대로 선택
정보 획득량 : 각 특성들이 훈련 예제들을 얼만큼 잘 분류할 수 있는가를 측정
엔트로피 : 확률 변수의 불확실성을 수치로 나타냄
정보 획득량 : 엔트로피(불확시리성)의 감소량

어떤 노드가 먼저 선택되어야할까?

  • 시간 특성 값을 알 때가, 장소 특성 값을 알 때보다 더 많은 정보를 줌
  • 시간 특성 값을 장소 특성 값보다 먼저 테스트 해야함
  • 이와 같이, 다른 특성들에 대해서 정복 획득량을 계산
  • 결정 트리의 각 노드에서 가장 큰 정보 획득량을 갖는 특성을 선택

얼마나 노드를 만들어야 할까?(Stopping rule)

  • 모든 특성들이 트리의 경로에 모두 포함되어 있는 경우
  • 말단 노드와 연관되어 있는 모든 훈련 예제들이 같은 클래스에 해당하는 경우
    즉, 엔트로피가 0일 때

가장 적합한 트리는?

  • 모델을 구축하기 위해 'bias'가 필요
    ex) 크기가 가장 작은 트리를 선호, 또는 깊이가 가장 높은 트리, 노드 갯수가 가장 많은 트리
  • 어떠한 트리가 새로운 데이터를 가장 잘 분류할 수 있을까?

Occam의 면도날

  • 면도날은 필요하지 않은 가설은 잘라내 버린다는 비유
  • 데이터의 특성과 부합하는 가장 간단한 가설을 선호
  • 모든 것이 똑같은 조건일 때, 가장 쉬운 설명이 가장 옳은 것
  • 과학자의 가설 선호도
  • 많은 데이터를 설명할 수 있으면서 가장 간단한 가설을 선택
    ex) F=ma
    결정 트리는 데이터의 특성과 부합하면서도 가능한 가장 작은 트리여야 함.

결정 트리 분류의 특징
장점

  • 다른 분류 방법에 비해서 상대적으로 빠름(계산량 적음)
  • 간단하고 모델 구축 원리를 이해하기 쉬움
  • 모델의 분류 룰(rule)을 사람이 직관적으로 이해하기 쉬움(어느 특성이 분류에 가장 중요한지 명확히 나타냄)
  • 다른 모델들에 비해서 더 좋은 성능이 나타날 때가 있음
    단점
  • 연속적인 특성 값을 갖는 데이터에 적합하지 않음
  • 클래스의 개수가 많고 데이터가 적을 때 성능이 좋지 않음
  • 훈련과정에서 계산량이 많음

Bagging

Bagging이란 bootstrap aggregating
다수의 분류기를 결합하는 앙상블 방법 중 하나(주로 결정 트리 분류기에 많이 쓰임)
k개의 bootstrap 샘플 $X_1..._k$를 훈련시켜 얻은 k개의 분류기를 투표, 평균 등의 방법을 사용하여 결합.
많은 데이터로부터 더 많은 특징(feature)을 얻을 수 있음.

Bootstrap

  • 데이터의 개수가 부족할 때 사용할 수 있음
  • 값들을 사용하여 표준 편차 또는 확신 구간 등 설정

[5강] 서포트 벡터 머신 support vectors

초평면이란?
데이터 임베딩 공간에서 한 차원 낮은 부분 공간(subspace)

최적의 초평면의 조건

  • 초평면과 결정영역 근처에 있는 '분류하기 애매한' 데이터의 거리가 최대가 되어야 함
  • 직관적인 이해: 만약 결정 영역 근처에 데이터가 없어야함

결정 영역의 초평면을 둘러싸고 있는 마진(margin)을 최대화시킴 (기능적 마진의 합)
서포트 벡터 가중치의 합을 최대화 시키려고 한다.
왜? 결정영역이 넓어야 좋으니까.

서포트벡터머신이 분류를 위해 사용하는 식
wx+b>=1 인 경우 양의 레이블

[6강] 신경망

뇌와 컴퓨터
|뇌|컴퓨터|
|:-:|:-:|
|분산처리|중앙처리|
|병렬처리|순차처리|
|처리속도$10^-3 $초|10-9초|

퍼셉트론 : 뇌를 모사한 신경망 알고리즘
입력 유닛들의 가중치의 합과 임계치를 사용하여 뉴런의 발화과정을 모사 선형 분리 문제를 해결하지 못하는 문제가 있다(예)XOR

다층 신경망의 분류 원리
다층 신경망은 입력층 - 은닉층 - 출력층 구조를 가지며 각 층의 유닛들은 퍼셉트론이다.
레이어를 쌓을수록 다양한 결정 영역이 추가로 생김으로써 선형 분리 문제를 극본한다.

[7강] 역전파

다층 퍼셉트론
적절한 가중치를 찾기 위해 경사 하강법(Gradient Descent)을 사용

[8강] 비지도학습Unsupervised Learning

클러스터링Clusters (데이터마이닝 기법 중 하나로, 가장많이 사용)

  • 옷사이즈 : S M L
  • 고객타입별구분 마케팅전략에 도움
  • 문서의 내용을 비슷한 정도에 따라 파일로 묶음
  • 동영상을 색감에 따라 구분
    데이터 그룹을 묶을 수 있는 어떠한 사전 정보도 주어지지 않기 때문에 비지도학습과 동의어로 사용됨

K-means클러스터링
데이터 포인트들을 무작위로 K개 선택하여 Centroid계산 후,
클러스터 배정과 Centroid 재계산(수렴조건이 만족될 때까지 반복)
아웃라이어에 약한점에도 불구하고 단순함과 효율성으로 인해 널리 사용됨
클러스터, 데이터, 클러스터 재배정 반복 횟수에 따라 선형적인 계산 복잡도를 가진다.

거리측정함수들
수치적 특성과 이산적 특성에 따라 다양한 거리 함수 사용
수치적 특성: 유클리디안, 제곱유클리디안, 맨허튼, Chebychev거리측정
이산적 특성: 단순 계수 비교, Jaccard계수비교

[9강] 컨볼루션 신경망 (Convolutional neural network, CNN)

신경생물학적 관찰이 컨볼루션 신경망 구조 설계에 동기를 부여함.
컨볼루션 층이란,
입력 이미지 속 다양한 위치에서 동일한 특징들을 탐색. 피처맵을 입력에 대해 슬라이딩 시킴.
같은 피처 맵은 동일한 가중치 사용.
이미지분류에 많이 쓰이나,
문제점은 이미지의 위치, 크기, 각도 변화 등에 취약함.
해결방법으로 풀링층(물체의 위치, 각도 변화에 잘 대처할 수 있게)을 이용한다.
?? 물체의 위치와 방향에 관계없이 물체의 고유한 특징을 학습할 수 있다???
역전파 알고리즘을 사용하여 학습이 가능하다.

컨볼루션 신경망과 일반 신경망의 차이
우리 뇌의 시각 피질이 물체를 이해하는 메커니즘 모사,
신경 세포들이 물체의 방향과 장소가 바뀌어도 별문제 없이 인식할 수 있었던 이유인 '컨볼루션'개념을 신경망 모델에 적용

ImageNet Challenge: 이미지를 자동 분류하라
8층->152층 깊어지고 있음
컨볼루션 신경망에서 주로 사용하는 활성함수 Relu

단점
일반적인 다층퍼셉츠론보다 더 많은 메모리 용량을 차지한다.
컨볼루션 과정에서 많은 계산비용을 요구한다.
같은 개수의 파라미터를 갖는 신경망보다 더 느리다.

[10강] 재현 신경망( Recurrent Neural Networks)

시계열 데이터를 확률적으로 모델링

재현신경망의 한계를 넘은
GRU(Gated Recurrnt Units)
LSTM(Long Short-Term Memory)
ESN(Echo State Networks) : 그리디언트 손실을 막기위한 전략은 입력과 은닉, 은닉과 은닉 사이의 가중치는 학습하지 않는다.

[11강] 메모리 네트워크

기존 재현 신경망의 단점: 은닉 유닛 벡터가 제한된 공간에 많은 입력 정보를 저장해야 함
메모리 네트워크: 재현 신경망의 저장 공간 한계 문제를 극복하기 위해 제안되었으며 스토리 선택 모듈G와 답선택모듈H로 구성됨

종단메모리네트워크(End-to-End)
필요한이유: 기존 메무리 네트워크는 스토리 선택 모듈G를 학습시키기 위해서 질의에 대한 적절한 스토리 정보를 사람이 추가로 작성해야 함.
여러 번의 메모리 접근을 위해 '파라미터 공유'라는 재현 신경망의 특징을 가짐
종단학습모델

  • 카메라의 이미지로부터 핸들 방향을 조절할 수 있는 모델을 만든다.
  • 질의를 주면 응답을 주는 모델을 만들고, 사람이 응답을 검토한다.
  • 이미지로부터 다양한 형태의 물체를 인식하는 분류기는 만든다.

나와 질의 응답하는 메모리네트워크 bAbl Task
모델의 언어 이해 및 추론 능력을 20가지로 나누어 테스트하려는 문제
기존 룰 기반 방식에서 메모리 네트워크를 활용하는 머신러닝 방식의 해결책이 제시됨

딥러닝에서 메모리를 명시적으로 활용하게 된 이유
입력 데이터의 길이가 길어질 경우 인코딩해야할 정보가 많아졌기 때문.
최근에 입력된 정보는 잘 기억하지만, 오래 전에 입력된 정보는 손실될 수 있기 떄문.
인코더 재현 신경망의 경우 가장 마지막 시간의 은닉 유닛이 입력 문장의 모든 정보를 담고 있어야 하기 때문.

[12강] 딥러닝 응용사례

딥러닝과 신경망
딥러닝은 신경망의 층을 여러 개 쌓은 것으로 결정영역을 복잡하게 만들었다
신경망의 층을 이해하는 것은 거의 불가능하지만, 딥러닝에서는 각 층은 올라갈수록 보다 추상적인 정보들을 담고 있다.
딥러닝은 신경망에 비해 층이 많으므로 학습을 용이하게 해주는 정규화, 오버피팅 방지 기법이 필요하다.

구글 번역기 어떤 원리일까? 인코더-디코더 모델 사용

메모리와 Attention is all you need(2017.구글)
재현 신경망의 은닉 유닛의 크기가 한정되어 있기 때문에 오래전 입력으로 들어온 단어의 정보가 손실됨
인코더 재현 신경망의 은닉 유닛들을 메모리에 저자하고 선형 조합(주의집중기작)

이미지를 자동으로 설명해주는 기계
이미지를 여러 등분으로 나눈 뒤, 부분 이미지들을 컨볼루션 신경망으로 인코딩시킹
인코딩된 벡터들은 순서대로 디코더 재현 신경망에 입력됨

신경망을 이용한 기계번역의 특징
원본 문장과 타겟 문장을 분산 표현으로 나타낸다.
통계적 기계학습에 비해 적은 모델 파라미터 개수를 사용한다.
번역 문제를 의미적 공간을 사용하여 학습할 수 있다.
경사 하강법을 이용하여 입력층부터 출력층까지 한꺼번에 종단 학습 가능.

[13강] Weka를 이용한 머신러닝 실습

Weka란? Waikato Environment for Knowledge Analysis
뉴질랜드의 Waikato 대학교 컴퓨터공학부에서 제작
Weka는 뉴질랜드에서만 발견되는 새이기도 함
대표적인 기계학습 알고리즘 모음, 데이터 마이닝 도구

Weka에서 제공하는 전처리기능
데이터 샘플링, 이산화, 차원축소

[14강] Theano를 통한 머신러닝 구현

LISA Lab(mila.umontreal.ca/en/)에서 만든 Python 기반 오픈소스 Package
deeplearning.net/software/theano

장점
Symbolic 연산 철학으로 간결하고 빠르게 모델 구현 가능
Symbolic 미분이 가능하므로 역전파 등을 직접 구현할 필요가 없음(grade함수 사용)
동일한 코드를 CPU와 GPN에서 모두 사용 가능
Python기반이므로, numpy, scipy 등 다양한 Python 패키지와 연동할 수 있음

단점
복잡하고 알기 어려운 에러메시지
RAM과 GPU의 VRAM사이 데이터 전송에서 많은 시간이 소모된다.

Thano로 GPU 프로그래밍 실습

  1. shared variables: RAM에서 GPU VRAM으로 데이터를 옮겨줌
  2. givens: symbolic 변수에 shared variables르 ㄹ대입
  3. updates: GPU연산 결과를 이용해 shared variables의 값을 수정

Theano로 신경망 구현하기
Theano를 사용하여 머신러닝 알고리즘을 구현할 경우, GPU를 사용하여 빠른 학습 가능.
간결한 코드 작성 가능, 미분의 자동 계산으로 프로그래머의 일을 줄여줌

[15강] Keras를 통한 딥러닝 구현 및 실습

Keras는 고수준의 다양한 모델 층, 활성함수, 목표함수 등을 제공하여 손쉽게 딥러닝 모델을 구현하게 해주는 라이브러리.
사용할 입력/출력 데이터를 모델의 처음과 마지막 층에 설정하고 가운데 층을 목정에 맞게 선택가능

장점
쉬운 모델 구현
다양한 함수 제공
손쉽게 커스터마이징 가능
GPU를 활용한 빠른 계산
직관적인 함수 제공
활발한 커뮤니티

단점
생성 모델의 부족
고수준 라이브러리
Theano사용에 따른 에러 분석의 어려움

Keras로 컨볼루션 신경망 구현하기
Sequential모델의
ZeroPadding2D / Convolution2D / MaxPooling2D 함수를 사용하여 VGG-16모델구현

'algorithm' 카테고리의 다른 글

[자료구조/알고리즘] 재귀.JSON [BEB 6th]011일차  (0) 2022.07.19
백엔드로드맵  (0) 2022.01.03
기초 알고리즘과 파이썬코딩  (0) 2021.07.19
컴퓨터 알고리즘 중급  (0) 2021.07.19
컴퓨터 알고리즘 초급  (0) 2021.07.19
Comments