티스토리 뷰

아래 글에 이어 작성된 글입니다.

 

 

[인공지능] 전문가 시스템과 지식

아래글에 이어 작성된 글입니다. [인공지능] 탐색 아래글에 이어 작성된 글입니다. [인공지능] 인공지능과 딥러닝 [인공지능의 의미와 딥러닝] 인공지능이란 무엇이고 10년대 들어 자꾸 언급되는

munak.tistory.com

 

 

 

이전과는 비교할 수 없을 만큼 발전한 정보처리 기술을 바탕으로 머신러닝(기계학습)을 통한 인공지능 붐이 다시금 일고 있습니다.  특히 인공신경망을 이용한 딥러닝이 주목받고 있죠. 이 글에서는 머신러닝과 인공신경망에 대해 작성해보겠습니다.

 

 


 

머신러닝

 

현재의 컴퓨터는 스스로 학습할 수 없기 때문에 우리가 어떤 작업을 컴퓨터에게 시키려면 프로그래밍을 통해 코드를 작성해 주어야 합니다. 만약 컴퓨터가 스스로 학습할 수 있다면 번거로운 코드 작업 없이도 여러 가지 일을 해낼 수 있지 않을까요? 이런 생각에서 시작한 것이 머신러닝입니다. 

 

 

머신러닝은 지도 학습, 비지도 학습, 강화 학습으로 크게 3가지로 구분되곤 합니다. 지도 학습은 입력과 출력 데이터를 제공하여 이를 매핑하는 일반적인 규칙을 학습하는 방법입니다. 반대로 비지도 학습은 외부에서 정답이 주어지지 않고 학습 알고리즘이 스스로 입력 데이터에서 어떤 패턴을 발견하는 학습입니다. 마지막으로 강화 학습은 보상 및 처벌의 형태로 학습 데이터를 제공하고 어떠한 상태에서 최적의 보상을 획득할 수 있도록 하는 비지도 학습의 한 종류입니다.

 

 

 

 

 

또 지도 학습의 경우, 결과가 실수로 출력되는 회귀(Regression)와 이산적(카테고리별)으로 출력되는 분류(Classification)로 나눌 수 있습니다.  

 

+ 회귀 : 주어진 입력-출력 쌍을 학습한 후에 새로운 입력값이 들어왔을때 합리적인 출력값을 예측하는 것
+ 분류 : 입력을 두 대 이상의 레이블(유형)으로 분할하는것 

 

 

 

 

 

머신러닝의 과정

 

머신러닝은 다음과 같은 과정으로 진행됩니다.  첫번째 글에서 언급했다 싶이, 현재 인공지능은 약인공지능으로 대규모 데이터 처리에 가깝기 때문에 제공하는 데이터가 굉장히 중요합니다. 따라서 양질의 데이터를 모으고, 정제하는 작업이 우선시 됩니다. 

 

 

 

 

 

 

모델 학습의 경우 이미 검증되고 뛰어난 성능을 가진 여러 머신러닝 알고리즘들을 이용해 진행되며, 이후 모델이 의도한 대로 작동하고 어느 정도의 성취도를 가지는지 평가 및 예측을 실행하게 됩니다.

 

 

 

 

 

+ 훈련데이터와 테스트 데이터 분할

 

학습 데이터 정제 과정에서는 머신러닝의 적합하도록 데이터를 가공하는 작업을 진행하게 됩니다. 이때 데이터를 훈련(train)데이터 셋과 테스트 (test, 검증(val) 데이터라고도 불린다.) 셋으로 나누는 작업이 필요한데, 이름 그대로 훈련데이터는 모델 학습에서, 테스트 데이터 셋은 평가 단계에서 사용됩니다. 학습시에 주어지지 않았던 데이터로 검증해야 모델을 제대로 평가할 수 있기 때문입니다. (시험에 풀었던 기출문제가 그대로 출제되었을 때, 풀지 않고도 답을 알 수 있는것과 같습니다.) 

 

 

 

 

 

코드 예제를 통해 머신러닝의 과정을 살펴보겠습니다.  sklearn에서 제공하는 분류알고리즘 중 하나인 KNN을 사용해 유명한 데이터 셋인 붓꽃 데이터를 분류하는 예제입니다. 

 

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn import metrics


# 데이터 셋 다운로드
iris = datasets.load_iris()
# 데이터 셋 출력
# print(iris)


X = iris.data    # 특징
y = iris.target  # 출력값(정답)

# 훈련데이터, 테스트 데이터 셋(80:20)으로 분할한다.
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=4)

# 분할 확인(차원 출력)
# print(X_train.shape)
# print(X_test.shape)


# KNN 분류 알고리즘 모델 생성 
knn = KNeighborsClassifier(n_neighbors=6)
# 학습
knn.fit(X_train, y_train) 

# 테스트 데이터 예측
y_pred = knn.predict(X_test)

# 평가(정확도 확인)
scores = metrics.accuracy_score(y_test, y_pred)
print(scores)

 

 

 


 

 

 

선형회귀

 

회귀에 대해 좀 더 살펴보겠습니다. 일반적으로 회귀는 데이터를 2차원 공간에 나타내었을 때 이를 가장 잘 설명하는 직선 또는 곡선을 찾는 문제라고 할 수 있습니다. 특히 선형회귀는 다음과 같이 식으로 표현할 수 있습니다.

 

\[f(x) = w(가중치)x + b(바이어스)\]

 

우리가 아는 방정식과 비슷한 형태이죠. 기울기와 절편대신 가중치와 바이어스(편향)를 통해 표현하며, 입력 데이터와 출력데이터간의 관계를 잘 표현하는, 오차가 적은 가중치와 바이어스를 찾는 것이 선형회귀의 목적이라고 할 수 있습니다.

 

 

 

 

 

 

 

 

손실(오차)과 경사 하강법

위 그래프에서 점과 예측된 직선 사이의 거리는 예측값과 정답간의 차이로 볼 수 있고, 이를 손실(오차)이라고 부릅니다. 전체적인 손실값이 줄어들수록 직선과 데이터 값이 비슷하며, 잘 예측했음을 알 수 있습니다.  이러한 손실을 일반화 하고 설명하기 위한 지표로 손실함수를 사용하며, 결과적으로 예측의 정확도를 높이기 위해서는 손실함수가 최소값이 되는 가중치와 바이어스를 찾아야 하는 문제로 귀결됩니다.

 

손실함수가 최소값으로 되도록하는 대표적인 방법으로 경사 하강법이 있습니다. 경사하강법이란, 현재 위치에서 기울기(미분값)를 이용해 점진적으로 최저점으로 이동하는 방법입니다. 

 

 

 

 

[인공지능] Numpy로 경사하강법 구현하기

[인공지능] Numpy 기본 사용 + 딥러닝 express 연습문제 2장 아래 글에 이어 작성된 글입니다. [인공지능] 딥러닝과 Python 라이브러리 본격적으로 인공지능을 실습하기 전 Python의 여러 라이브러리를

munak.tistory.com

 

 


 

 

뉴런과 인공신경망

 

우리의 신경계를 구성하는 세포 뉴런은 서로 연결되어 있어 어떠한 자극이 들어오면 전기 신호를 전파합니다. 이때 여러 전기 신호는 연결된 신경의 두께에 따라 그 세기가 달라지는데, 두꺼울수록 그 세기가 더 강하게 전달됩니다. 전달된 전기신호는 뉴런 내에서 합해지게 되고 이 신호가 특정 임계값을 넘으면 활성화되어 출력 신호가 발생하게 됩니다. 출력 신호는 다음 뉴런의 입력 신호가 되며 이를 반복해 신호를 전파합니다.  아래는 이 과정을 수학적 모델로 표현한 것입니다.

 

 

 

 

 

전달받은 전기신호는 입력 데이터, 신경의 두께는 가중치, 가중치에 따라 합해진 신호가 임계값을 넘어 활성화되었는지 판단하는 것이 활성화 함수입니다. 따라서 뉴런의 출력은 다음과 같이 정의할 수 있습니다.

 

 

 

 

 

 

 

연구자들은 이 계산식을 간단히 만들기 위해 바이어스를 \(b = -\)𝜽 로 정의하여 뉴런의 출력을 가중치와 바이어스를 통해 나타낼 수 있도록 표현하였습니다. 위에서 설명한 선형회귀와 굉장히 유사해 보이지 않나요? 맞습니다. 회귀는 인공신경망의 밑거름이 되기 때문입니다.

 

 

 

 

 

 

정리하면 인공신경망은 생물학적인 신경망(뉴런)에서 영감을 받아 만들어진 컴퓨팅 구조라고 할 수 있습니다. 인공신경망 통해 인간의 학습을 구현하는 것이 가능해졌고, 이는 몇 개의 소자가 오동작하더라도 전체적으로 큰 문제가 발생하지 않아 안정적이라는 장점이 있습니다. 다음 글에서는 신경망의 초기 모델인 퍼셉트론에 대해 작성해 보도록 하겠습니다. 아래는 관련 문제 풀이 포스트링크 입니다.

 

 

[인공지능] 딥러닝 express 연습문제 4장

[딥러닝 express]의 연습문제 4장 풀이입니다. (개인적인 풀이기에 오답이 있을 수 있습니다!) 01. 선형 회귀는 주로 독립 변수와 종속 변수 간에 선형적인 관계가 성립할 때 많이 사용된다. 다음중

munak.tistory.com

 

 

 

감사합니다.

 

 


 

 

공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.

 

댓글
«   2024/11   »
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 29 30
Total
Today
Yesterday