230405 [AI]

JUNHO YEOM·2023년 4월 5일
0

AI

목록 보기
3/4

정형데이터 대상

Linear Regression
Logistic Regression
Multinomial Classification


Linear Regression

Linear Regression -> 종속변수가 연속적인 숫자값
-> 학습데이터의 상태(종속변수)가 변해요


Logistic Regression(binary classification)

0 ~ 1사이의 확률 값 한개
학습데이터의 상태(종속변수)가 다시 변해요


Multinomial classification

class별 확률값 -> 0.6, 0.3 0.1


비정형 데이터 대상

사람들이 흔히 이야기 하는 소리, 언어, 그림등의 비정형 데이터에 관련한 Data를 학습시켜서 예측 해보고 싶어요


image, 소리와 같은 비정형 Data의 경우 학습이후의 정확도가 높게 나오지 않는 단점을 발생했어요.
단점이 있으니까 새로운 이론, 방법이 나왔어요!


Artificial Nueral Network(ANN) 인공 신경망

은닉층(hidden layer)과 같은 층(layer)을 추가하고, 유닛(unit) 혹은 노드(node)를 더해 사람과 같이 복잡한 구조로 연산을 수행하는 모델.

hidden layer와 같은 layer를 추가해서
(Unit 혹은 Node를 추가해서)
사람과 같은 복잡한 구조로 연산하게 하자

이것을 깊게 하면? DNN


Deep Nueral Network

ANN를 더 깊게 쌓아(Deep Neural Network, DNN), 더 많은 층을 추가 하는것.
DNN은 대용량 데이터에서 높은 정확도를 보이며, 이미지 분류, 자연어 처리 등 다양한 분야에서 사용됩니다.

인공 신경망은 층과 유닛을 더해 구조를 복잡하게 만들며, DNN은 이를 깊게 쌓아 높은 정확도를 보이는 모델.

Image를 DNN을 이용해서 학습하면 좋겠네요?
하지만 컴퓨터는 공간지각 능력이 없어요

이미지 입력은 기본적으로 3차원이에요
DNN은 입력이 2차원이에요

저번 시간에는 2차원을 1차원으로 쭉 펴서 집어 넣었어요
어쩔 수 없었어요
1차원으로 강제로 만듦으로 인해 공간적인 Data가 사라지는 문제를 해결하기 위해서 CNN이 나왔어요


여기서부터는 colab을 이용할 꺼에용


Image 파일에 대해 기억해야 하는것

  1. 좌표계
    데카르트 좌표계
	y축
	|
	|
	|
	|
-------------------------- x축
	|
(x, y)

y축
x축

이미지 좌표계가 따로 있어요
(y,x)

(0.0)
	|
------------------------ x
	|
    |
    |
    |
 	y
pixel data

이미지의 기본

이미지는 3차원 Data로 구성되어 있어요
가로, 세로, color

컴퓨터에서의 True Color => 24bit


흑백 이미지

가로, 세로, RGB
RGB 값을 더해서 평균을 구해요. 그런 다음 평균값을 넣어요
그러면 Gray scale image(흑백)이 됩니다.


비정형 데이터의 가장 대표적인 image를 학습하려면 어떻게 해야 할까

CNN(Convolutional Neural Network)
Convolution: 합성곱


CNN(Convolutional Neural Network)

convolution연산 -> 합성곱 연산

합성곱 연산

f, g2개의 함수에서
f를 반전(inversion)하고 이동(shift)시킨 다음, g와 곱한 값을 적분하여 결과를 얻는 연산.

ex

-pixel1pixel2pixel3pixel4
pixel11110
pixel20111
pixel30011
pixel40011
pixel50110

filter

-pixcel1pixcel2pixcel3
pixcel1101
pixcel2010
pixcel3001

1칸이동을 반복하며, 중복해서 Filter와 example을 계산
filter를 적용하고나서는 9개가 나와요

stride: 몇칸 이동할지, stride가 커지면, 나오는 값은 작아져요

Filter를 Kernal이라고 해요,
그럼 convolution을 하는 이유는 무엇이고, 어떤 의미가 있을까요?

이미지의 크기가 점점 줄어들어요
큰 이미지가 점점 작아져요

padding: 내가 임의로 이미지의 사이즈를 살짝 넓혀주는 것
zero padding: 0으로 감싸주어서 이미지를 넓혀줘요

zero padding으로 0을 겉에 더해주면 convolution연산을 계속해도 이미지의 크기는 유지될 꺼에요

kernal(필터)를 여러개 사용할 수 있어요
여러가지 필터(kernal)을 적용해서 다양하게 변형된 변형본을 얻을 수 있어요

내가 가진 이미지를 변형 시켜서 여러장 만드는 거에요.
Data의 개수는 늘지만 Data의 Size는 줄어들꺼에요.
학습이 더 잘될 것 같은 느낌이 드네요?


합성곱 연산을 실행하면

합성곱 연산(convolution)
이미지의 특징을 뽑아내서 학습에 여러 이미지를 만드는 것

filter(kernel)에 따라 골라지고, 여러개의 filter를 사용

이미지 1개 -> 특징만 추출한 이미지 여러개로 만들어 져요

너무 많은 이미지(Data)가 생성되기 때문에 학습에 시간이 오래 걸리는 문제가 발생해요(이미지 사이즈는 약간 줄어요)

CNN은 Epoch에 따라서 filter의 값을 변경시켜요


자주 사용되는 CNN의 Pooling 방법

MAX Pooling: 이미지를 갖고 있어. 어떻게 가지고 있냐면 이렇게 가지고 있엉
filter를 거쳐서 특징을 뽑아낸 이미지(Feature Map)

풀링할 때도
Kernel size, stride size가 정해져요
ex:
kernel: 2x2
stride size: 2

pixcel중 가장 큰 값을 뽑아요, stride size만큼 움직여요, 다시 kernel size의 크기안에 있는 가장 큰 값을 뽑아요.
이 작업을 반복해서 이미지를 만들어요


CNN을 이용해서 Model을 학습하면

Image 학습, 예측에 좋은 결과를 얻을 수 있어요

데이터는 어떠한 형태로 입력해야 하나요?
Model을 어덯게 만드나요? -> keras
Model학습, 평가 -> keras

실사 데이터를 이용해서 학습 or 예측하려면 어떻게 해야 할까요?

0개의 댓글