학교/인공지능

2_인공지능개론

서윤-정 2024. 4. 20. 19:10

[인공지능 개발에 많이 쓰는 라이브러리]

* 사이킷런

- 분류, 회귀, 군집화, 차원 축소 등의 고전적인 기계 학습을 지원하는 라이브러리

- SVM, 결정트리, 랜덤포레스트, k-nn, 얕은 신경망 등을 제공함

- 딥러닝을 지원하지 않고, 고전적인 기계 학습을 지원

 

* 텐서플로

- 구글에서 개발한 딥러닝을 지원하는 대표적인 라이브러리

- 컨볼루션 신경망, 순환 신경망, 강화 학습 등 제공

 

* 케라스

- 텐서플로를 한 단계 추상화한 라이브러리

 

* 파이토치

- 페이스북에서 개발한 딥러닝 라이브러리

 

 

 

 

 

[레모네이드 실습]

* 독립변수: 원인이 되는 것

* 종속변수: 결과

 

* 순서

1. 과거 데이터 준비

2. 모델 구조 제작

3. 모델 학습

4. 모델 예측(이용)

 

 

 

 

 

 

import tensorflow as tf

import pandas as pd

 

# 레모네이드 데이터셋 불러오기

filepath = '/content/lemonade.csv'

lemonade = pd.read_csv(filepath)

lemonade.head()

 

# 독립 변수(temp)와 종속변수(sales)를 선택

independent = lemonade[['temp']]

dependent = lemonade[['sales']]

# 데이터 형태 확인

print(lemonade.shape)

print(independent.shape, dependent.shape)

 

# TesorFlow 사용하여 모델 만들기

# 독립 변수 개수는 온도 컬럼 하나이므로 첫 번째 줄의 숫자 부분에 1

X = tf.keras.layers.Input(shape=[1])

# 종속변수는 개수가 판매량 하나이기 때문에 숫자 부분에 1

Y = tf.keras.layers.Dense(1)(X)

model = tf.keras.models.Model(X,Y)

# 모델 컴파일하기. 평균 제곱 오차(MSE)를 손실 함수로 사용

model.compile(loss='mse')

 

# 모델 학습시키기. fit 메서드 사용하여 독립 변수, 종속 변수 전달하고, 학습 횟수(epochs) 지정

model.fit(independent, dependent, epochs=10000, verbose=0)

model.fit(independent, dependent, epochs=10)

 

# 학습된 모델 사용하여 예측 수행

print(model.predict(independent))

print(model.predict([[15]]))

 

 

 

 

 

 

 

[과정 1) 과거 데이터 준비]

 

 

 

 

 

[과정 2) 모델 구조 생성]

 

 

 

독립변수(원인) 개수는 온도 컬럼 하나이므로 첫 번째 줄의 숫자 부분에 1

종속변수(결과) 개수가 판매량 하나이므로 숫자 부분에 1

 

 

 

 

 

 

 

[과정 3) 모델 학습]

[과정 4) 모델 예측(이용)]

 

 

# 3: Epoch: 전체 데이터를 몇 번 학습할지를 결정해주는 숫자. 지금 예에서는 1000번 학습

# 4: 15라는 독립변수를 넣었을 때 결과를 예측해봐라

 

 

 

 

 

* epochs = 10일 때,

Loss는 학습이 얼마나 진행되었는지를 알려주는 지표. 

학습이 진행될 수록 값이 떨어짐

 

 

 

 

 

 

 

* 손실 (loss)

- 데이터의 원래 종속변수(정답)과 예측된 값의 차이의 제곱

- 평균제곱오차 (MSE)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[CPU, GPU, NPU, TPU]

* CPU

- 중앙처리장치

- 컴퓨터의 중앙에서 모든 데이터를 처리하는 장치라는 뜻

- 하나의 부품에 연산 장치, 해독 장치, 제어 장치 등이 집적되어 있는 형태의 마아크로프로세서

- 연산 및 논리 연산을 수행하는 ALU(산술 논리 단위)가 1개임

- 직렬처리

- 전자계산기 기본 구조

 

* GPU

- 그래픽 처리에 필요한 대용량 연산을 수행하기 위한 Co-processor 형태로 출발

- 단순한 형태의 대량 계산을 CPU로부터 독립시키기 위해 고안됨

- 단순 연산을 병렬처리

 

 

 

 

 

[CPU]

* CPU 작동 원리

- CPU는 일의 순서를 잘 계산한 후 순서에 맞춰 계산 수행

- 대부분 프로그램이 복잡한 순서를 가진 알고리즘으로 구현되었기 때문에,

CPU는 이러한 프로그램을 잘 순서화해서 일을 처리

- 처리할 일을 메모리(DRAM)에 불러 들어와서 어떤 식으로 처리할 것인지를 결정한 다음(Control Unit) 계산을 처리 (ALU)

- 딥러닝에서 사용하는 계산들은 기존의 CPU가 수행한 계산보다 훨씬 덜 복잡하므로 딥러닝 계산에 최적화된 처리 장치 필요

 

- 단점: 순차적인 일에 강하고, 병렬적인 일은 상대적으로 GPU에 비해 떨어짐

 

 

 

[GPU]

- 원래는 그래픽 작업을 처리하는 용도로 개발, 간단하지만 많은 계산을 할 수 있도록 설계

- 딥러닝 또한 간단하지만 많은 문제를 해결해야 하므로 GPU를 사용

- 다만, GPU가 계산 성능이 좋긴 하지만 복잡한 문제를 빠르게 해결할 수 없기 때문에 CPU와 GPU를 적절히 사용하는 것이 중요

 

 

 

 

[NPU]

- Neural network processing 에 특화된 칩셋

 

 

 

 

 

[TPU]

- 구글에서 제작된 NPU의 이름

- 텐서 프로세싱 유닛 기계학습을 위해 개발되었으며, tensorflow에 맞게 제작된 맞춤형 집적 회로

 

 

 

 

 

 

 

 

 

[인공지능이란?]

* 인공지능(Artificial Intelligence)

- 인공지능: 인공적으로 만든 지능

- 지능: 계산이나 문장 작성 따위를 지적 작업에서, 성취 정도에 따라 정하여지는 적응 능력. 즉, 지적 작업에 필요한 능력

 

 

[머신러닝]

* 머신러닝(Machine Learing)

- 머신러닝은 데이터를 사용하여 인공지능을 만들 수 있음

- 기계가 공부하는 것. 

사람이 직접 프로그램을 만들어서 기계에 넣어주는 것이 아닌,

데이터를 사용하여 기계가 스스로 학습하는 방식 

 

 

 

 

 

 

* 전통적인 프로그래밍 방식

- 어떤 결과를 내기 위해서 프로그램 작성

- 그 프로그램에 입력값(데이터)을 주면, 정해진 프로그램(사람이 만든 것, 규칙)에 따라 결과(해답)가 나옴

- 데이터를 넣으면 그 데이터를 어떠한 식으로 처리하는지 프로그래머가 프로그램을 작성함

 

* 머신러닝 방식

- 데이터와 결과(해답)을 사용하여 학습하기 때문에 스스로 프로그램(규칙)을 만들 수 있음

- 특정 데이터와 함께 그 데이터로 인해 나타나는 결과를 같이 넣어주면 기계가 그 관계(규칙)을 찾음

- 기계 스스로 규칙을 찾아내므로 예전처럼 사람이 직접 프로그래밍 할 필요 없음

 

 

 

 

 

 

* 머신러닝

- 인공적으로 지능을 만들기 위해 사용하는 것

- 사람이 할 수 있거나 하기 어려운 작업을 대신 수행할 기계를 학습을 통해 만들어내는 일련의 작업을 의미

- 사람이 직접 프로그래밍 할 필요 없이 대량의 데이터를 접했을 때 스스로 수정하여 원하는 결과를 얻기 위한 기숧

- 기계가 스스로 프로그램을 만드는 것, '기계가 학습한다'

- 학습 재료가 데이터이므로 오늘날 데이터 중요성이 강조됨

 

 

 

 

 

 

 

 

 

 

 

[머신러닝 유형]

1. 지도 학습: 정답지로 학습. 예측 모델 등에 사용 (문제, 정답 모두 알려주고 공부시킴)

2. 비지도 학습: 정답 없이 학습. 군집화 등에 사용 (답을 가르쳐 주지 않고 공부시킴)

3. 강화 학습: 시뮬레이션 반복 학습. 성능 강화 등에 사용 (보상을 통해 상은 최대화, 벌은 최소화하는 방향으로 행위 강화하는 학습)

 

 

 

 

 

 

[지도 학습]

* 지도 학습

- 인공지능을 누군가가 직접 가르치고 이끄는 학습 방법

- 입력값, 결과값(정답 레이블)을 함께 주고 학습을 시키는 방법, 분류/회귀 등 여러가지 방법에 활용됨

- 주로 과거 데이터를 기반으로 앞으로 있을 이벤트를 예측

- 데이터 중에서도 정답이 있는 데이터를 이용하여 학습

 

- 인공지능이 사과를 학습할 때 사과 사진을 보여주며 '이것은 사과야' 라고 말해주고

배를 학습할 때 배 사진을 보여주며 '이것은 배야'라고 말해줌

- 학습하는 하나하나에 대해 감독자의 입장에서 학습시킴

 

- 사과, 배 사진은 서로 다른 수많은 종류의 사진이지만, 사과, 배라는 '이름'은 일정함. 

- 레이블(Label)이라고 부르고 데이터의 정답을 의미함

 

- 이러한 형태의 데이터를 인공지능에 입력하여 학습시키면

인공지능은 여러 장의 사과, 배 사진을 보며 사과만의 특징을 찾아냄

- 수많은 데이터를 사용하여 학습한 인공지능에게 새로운 사진을 보여주면서

'이것이 사과?배?' 라고 물으면 인공지능은 학습한 내용 바탕으로 답을 말할 수 있음.

 

 

 

 

[지도학습 사례 - 분류]

* 지도 학습은 분류(Classification)에 사용됨

- 정답이 있는 데이터, 즉 레이블이 있는 데이터를 사용하여 인공지능 학습

- 레이블 개수에 따라 분류할 수 있음

- 데이터의 정답 개수에 따라 그 종류가 결정됨

- 즉, 어떤 데이터는 여러 성질들이 있는데 그 성질들이 2가지 답으로 나타난다면,

그 데이터를 사용하여 이진 분류를 할 수 있음

- 그리고 여러 성질들이 3가지 답으로 나타난다면 그 데이터로 지도 학습을 사용하여

다중 분류가 가능한 인공지능을 개발할 수 있음

 

* 이진 분류 (Binary classification)

- 그 중 두가지를 구분하는 문제

- ex) 스팸/일반 메일인지, ct 사진에서 암이 보이는지 아닌지

 

* 다중 분류 (Multiclass classfication)

- 다양한 새의 종류나 붓꽃(Iris)의 종류 혹은

지폐의 종류와 같이 여러 개 중 하나를 구별

 

 

 

 

 

[지도학습 사례 - 회귀]

* 회귀(Regression)

- 연속적인 값을 예측하는 것

- ex) 주식 예측, 학생의 성적 예측

- 분류는 특정한 값, 즉 데이터의 정답 개수(레이블의 수)에 따라 분류하는 가짓수가 결정됨

- 회귀는 특정한 값만 예측할 수 있는 것이 아니라 다양한 값을 예측할 수 있

 

 

 

 

 

 

 

[비지도 학습]

* 비지도 학습 (Unsupervised Learning)

- 지도학습이 아닌 학습, 정답이 없는 데이터를 사용하여 학습

- 인공지능에게 사과, 배 사진을 주어지고, 정답을 주지 않으므로

정확하게 구별할 수는 없지만, 인공지능이 여러 사진을 비교하며 스스로 형태를 나눔.

- 대상의 특징을 살펴보고 스스로 그 특징에 따라 구분해 나가는 것

- 이때 인공지능은 높은 확률로 사과는 사과, 배는 배로 구분하지만

정답이 없기 때문에 무엇이 사과인지 배인지는 구분하지 못함

- 정답이 없는 데이터를 보고, 그 데이터의 특징을 스스로 찾아서 구분

- 새로운 데이터가 들어왔을 때 그 데이터가 어떤 그룹에 속하는지 스스로 판단할 수 있음

- 정답이 없는 데이터를 사용해서 스스로 판단할 수 있는 지능을 가지게 됨

- 즉, 지도 학습은 정답이 있는 데이터로 학습한다면, 비지도 학습은 정답이 없는 데이터로 학습하는 방식

 

- 비지도 학습은 지도 학습을 보완해주는 중요한 역할을 함

- ex) 사진에서 사람의 얼굴을 판별하여 사람별로 사진을 정리해주는 인공지능

(처음에는 각 사람의 얼굴 특징을 바탕으로 사람들을 구별해 나감. 정답이 없기 때문에)

 

 

 

 

 

[비지도 학습 사례 - 군집화]

* 군집화 (Clustering)

- 데이터를 다양한 그룹으로 만들 수 있음

- 이렇게 만들어진 그룹을 군집(cluster) 이라고 하며,

다양한 그룹으로 만드는 과정을 군집화 하고 함

- 데이터의 여러 특징들을 살펴보고, 가장 대표적인 특징만 뽑아내는 차원 축소를 할 수 있음

- ex) 유튜브 추천 알고리즘, 상품 추천

 

 

 

 

[비지도 학습 사례 - 차원 축소]

* 차원 축소 (Dimensinality Reduction)

- 차원이란 데이터의 특징(feature)의 크기

- 모든 조건(데이터)을 고려할 수 없으므로 이 중에서 몇 가지의 특징만으로 좁혀나감

(데이터의 피처(feature)를 줄인다)라고 표현

- 비지도 학습을 사용하여 데이터를 잘 표현할 데이터의 피처를 찾아주어서, 학습을 더욱 효율적으로 사용

 

- 데이터의 특징을 줄여주기 위해서

고차원 데이터에서 분산이 큰 방향을 찾아서

더 작거나 같은 수의 차원을 갖는 부분공간으로 투영하는 것

 

 

 

 

 

 

 

 

 

 

[강화 학습]

* 강화 학습 (Reinforce Learning)

- 현재의 상태(state)에서 어떤 행동을 취하는 것이 최적인지 학습하는 것

- 행동을 취할 때마다 외부 환경에서 보상이 주어지는데, 

이러한 보상을 최대화하는 방향으로 학습이 진행됨

- 지도학습이 배움을 통해서 실력을 키우는 것이라면,

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

- 시행착오를 거쳐 학습하는 방법

- 그 행동의 결과가 자신에게 유리한 것이었다면 상을 받고, 불리한 것이었다면 벌을 받는 것

- 이 과정을 매우 많이 반복하면 더 많은 보상을 받을 수 있는 더 좋은 답을 찾아낼 수 있다는 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[딥러닝] 

- 딥러닝은 인공지능을 만드는 방법 중 하나. 인공지능을 만드는 방법에는 딥러닝 이외에도 다양한 기법들 사용되고 있

- 생각할 수 있는 기계를 의미하는 인공지능을 만들기 위한 여러 방법이 있고,

그 중 사람의 뇌에서 이루어지는 원리를 이용하여 인공지능을 만드는 방법이 딥러닝

- 뉴럴 네트워크 --> 즉 신경망

- 사람의 뇌는 여러 신경 세포, 특히 뉴런이라는 세포가 무수히 많이 얽혀 있음. 이를 신경망 이라 함

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'학교 > 인공지능' 카테고리의 다른 글

4_인공지능개론  (0) 2024.06.06
3_인공지능개론  (0) 2024.04.21
결정 트리 코드  (0) 2024.04.19
SVM 코드  (0) 2024.04.19
레모네이드 실습 코드  (0) 2024.04.19