본문 바로가기
Machine Learning

머신러닝 기초 1, and/xor 연산

by wanttosleep1111 2023. 3. 11.

머신러닝 기초

 

1. 인공지능의 역사

 

2. 튜링 테스트 (Turing Test)

  • 기계가 인간과 비슷하게 대화가 가능하다면 기계에 지능이 있다고 인정하는 방식
  • 최초 통과 AI : 유진 구스트만 (러시아 개발진)

 

  • CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart)
    사람과 컴퓨터를 판별하는 튜링 테스트

 

 

3. 인공지능의 종류

  • 약한 인공지능 (Weak AI)
    학습을 통해 문제를 해결, 주어진 조건 아래서만 작동 → 사람을 흉내내는 수준
    자율자동차, 구글 번역, 페이스북 추천 등
    (ex : 구글 AlphaGo, IBM Watson, 아마존 Alexa, Apple Siri 등)

  • 강한 인공지능 (Strong AI)
    사고를 통해 문제를 해결, 사람과 같은 지능 (추론, 문제해결, 계획, 의사소통, 감정, 지혜, 양심)
    (ex : 영화 아이로봇 써니, 에이아이 데이빗, 엑스마키나 에이바 등)

  • 초 인공지능 (Super AI)
    창의력을 통해 문제 해결, 모든 영역에서 인간을 뛰어넘는 인공지능
    (ex : 영화 매트릭스 아키텍트, 터미네이터 스카이넷, 트랜센던스 윌 캐스터)

 

4. 인간 vs 인공지능

  • 일자리 뿐만 아니라 미술, 음악 등 예술 영역까지 인공지능 확대

 

 

5. 모라벡의 역설, 불쾌한 골짜기, 인공지능 윤리

  • 모라벡의 역설 : 어려운 것은 쉽고, 쉬운것은 어렵다
    (ex : 사람은 쉽게 시바견과 반지의 제왕 사루만을 구분 가능하지만, 인공지능은 어렵다)

 

  • 불쾌한 골짜기 : 인간이 로봇에 느끼는 호감도가 증가하다가 어느 정도 사람과 유사해지면 갑자기 강한 거부감을 느끼는 현상

 

  • 인공지능 윤리
    인공지능을 이용해 다양한 상황을 만났을 때, 이것이 옳고 그름을 판단하기가 어렵다.

  • 트롤리의 딜레마 
    소수를 위해 다수의 희생, 다수를 위해 소수 희생에 대해 윤리학적 관점에서 올바른 선택이 어려움

 

  • 로봇 3원칙
    (대원칙) 로봇은 인류에게 해를 가할 만한 명령을 받거나 행동을 하지 ㅇ낳음으로써 인류에게 해가 가해지는 것을 방치해서도 안된다.
    ① 로봇은 인간에게 해를 가하거나, 혹은 행동을 하지 않음으로써 인간에게 해가 가도록 해서는 안된다.
    ② 로봇은 인간이 내리는 명령들에 복종해야 하며, 단 이러한 명령들이 첫 번째 법칙에 위배될 때는 예외로 한다.
    ③ 로봇은 자신의 존재를 보호해야만 하며, 단 그러한 보호가 첫 번째와 두 번째 법칙에 위배될 때는 예외로 한다.

 

5. 머신 러닝 (기계학습) 등장

  • 인공지능 기반의 기술로서 컴퓨터가 데이터를 통해 스스로 학습하면서 새로운 지식을 얻어 자동으로 개선하고 결과를 예측하는 컴퓨터 알고리즘
  • 인공지능 (Artificial Intelligence) : 사고 방식이나 학습 등 인간이 가지는 지적 능력을 컴퓨터를 통해 구현하는 기술
    머신러닝 (Machine Learning) : 컴퓨터가 스스로 학습하여 인공지능의 성능을 향상시키는 기술 방법
    딥러닝 (Deep Learning) : 인간의 뉴런과 비슷한 인공신경망 방식으로 정보를 처리

 

  • 규칙 기반 시스템(Rule-based expert system, if-else로 하드 코딩)의 한계 → 머신러닝 등장
    많은 상황에 대한 규칙들을 모두 만들어 낼 수 없음
    제작 로직이 특정 작업에만 국한
    작업이 조금만 변경되더라도 전체 시스템을 재설계해야 할 가능성 높음
    규칙 설계 시 해당 분야에 대해 잘 알고 있어야 함
    (ex : 스팸 메일 필터, 얼굴 인식 시스템)

 

6. 머신 러닝

  • 주어진 데이터를 이용한 학습을 통해 기계가 규칙을 만들어 낸다.
  • 모델은 데이터와 결과를 이용해 특성과 패턴을 찾아내어 학습을 하고, 찾아낸 특성과 패턴을 이용하여 새로운 데이터에 대한 결과(값, 분포) 예측을 수행
  • 머신러닝과 딥러닝은 기존 데이터를 이용해 아직 일어나지 않은 미지의 일을 예측하기 위해 만들어진 기법

 

※ 일반 프로그램과 머신러닝,딥러닝의 차이

 

  • 머신러닝과 딥러닝의 차이
    머신러닝 : 모델에게 데이터를 학습시킬 때 사람이 특성을 추출해 학습을 시킴
    딥러닝 : 데이터 학습에 사람이 특성을 추출하는 일련의 과정까지 컴퓨터가 모두 진행
    딥러닝은 데이터가 많으면 정확도가 우수하지만, 데이터가 작다면 머신러닝 알고리즘이 더 우수

 

구분 Machine Learning Deep Learning
훈련 데이터 크기 작음
시스템 성능 저사양 고사양
Feature(특성) 선택 전문가 (사람) 알고리즘
Feature(특성) 수 많다 적다
문제해결 접근법 문제 분리 → 각각 답을 얻음 → 결과 통합 end - to - end (결과를 바로 얻음)
실행시간 짧다 길다
해석력 해석 가능 해석 어려움

 

  • 머신러닝 예시
    X : 개인 정보와 주변 환경 정보, Y : 생존/사망 → 생존자 예측 모델
    X : 부동산 정보, Y : 집값 → 집값 예측 모델
    X : 유저들의 게임 내 활동 정보, Y : 게임 이탈 여부 → 이상 탐지 모델
    X : 상품 리뷰 정보, Y : 상품에 긍정 혹은 부정 → 감성 예측 모델
    X : 쇼핑몰 페이지 검색 및 클릭 기록 → 관심도 예측, 맞춤 상품 추천 시스템
    X : 꽃의 정보 (잎의 길이, 너비 등), Y : 꽃의 종류 → 꽃 품종 예측 모델
    X : 숫자 손 글씨 데이터, Y : 숫자 라벨(0~9) → 숫자 이미지 분류 모델

 


 

7. 머신러닝 종류

  • 지도학습(Supervised Learning) : 데이터에 대한 Lable(명시적인 답)이 주어진 상태에서 컴퓨터를 학습

    ① 분류(Clssification)
    미리 정의된 여러 클래스 레이블 중 하나를 예측
    속성 값을 입력, 클래스 값을 출력으로 하는 모델
    붓꽃(iris)의 세 품종 중 하나로 분류, 암 분류 등
    이진 분류(0과 1, True와 False), 다중 분류 등

    ② 회귀(Regression)
    연속적인 숫자를 예측
    속성값을 입력, 연속적인 실수 값을 출력으로 하는 모델
    예측 값의 미묘한 차이가 크게 중요하지 않음
    어떤 사람의 교육 수준, 나이, 주거지를 바탕으로 연간 소득 예측

  • 비지도 학습(Unsupervised Learning) : 데이터에 대한 Lable(명시적인 답)이 없는 상태에서 컴퓨터를 학습
    데이터의 숨겨진 특징, 구조, 패턴을 파악하는데 사용
    데이터를 비슷한 특성끼리 묶는 클러스터링(Clustering)과 차원축소(Dimensionality Reduction)등이 있음

    ① 군집 분석(Clustering)
    특별한 사전 가정 없이 개체들 사이의 유사성, 거리에 근거하여 군집을 찾고 다음 단계의 분석을 하게 하는 방법
    개인 또는 여러 개체를 유사한 속성을 지닌 대상들끼리 그룹화 하는 탐색적 다변량 분석 기법
    계층적 군집 분석과 비계층적 군집 분석으로 구분

    ② 차원 축소(Dimensionality Reduction)
    매우 많은 특성으로 구성된 다차원 데이터 세트의 차원을 축소해서 새로운 차원 세트를 생성
    특성 선택과 특성 추출로 구분
    단순하게 데이터를 압축하는 것이 아닌 차원 축소를 통해 데이터를 조금 더 잘 설명할 수 있는 요소를 추출

 

  • 강화 학습 (Reinforcement Learning)
    인간의 행동 심리학에서 영감을 받은 방법
    어떠한 환경에서 정의던 AI가 현재 상태를 인식해 선택 가능한 행동들 중 보상을 최대화 하는 행동 또는 행동 순서를 선택하는 방법
    게임이론이나 최적화 제어 이론 등 여러 분야에서 연구가 이루어지고 있다.

 


▶ 예제

and, xor 연산을 통해 기계가 학습과 정답을 예측하는 과정을 알아보기

 

1. and 연산 : 입력값 전체가 True인 경우에만 True 리턴

① 라이브러리 import

# 기본 라이브러리 3종 import
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

# import matplotlib.pyplot as plt 가능
# sklearn import : 데이터 분석을 위한 머신러닝 전용 라이브러리인 사이킷런 임포트
# 사이킷런 라이브러리에서 KNN 모델 불러오기
# KNeighborsClassifier 분류 모델
from sklearn.neighbors import KNeighborsClassifier
# 학습한 모델의 신뢰성을 검증하기 위해 평가할 수 있는 라이브러리 불러오기
from sklearn.metrics import accuracy_score
# 오류창 무시
import warnings
warnings.filterwarnings("ignore")

 

② 데이터 프레임 형태로 데이터 만들기

df = pd.DataFrame({
          "A" : [0,0,1,1,1,0,1,0],
          "B" : [0,1,0,1,0,0,1,1],
    "A and B" : [0,0,0,1,0,0,1,0]
})
df

 

③ .iloc를 이용해 훈련 세트와 문제 세트를 생성하고 shape 확인

X_train = df.iloc[:6,:2]
y_train = df.iloc[:6,2]
X_test = df.iloc[6:,:2]
y_test = df.iloc[6:,2]
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)

④ 모델 생성, 모델 학습, 모델 예측, 모델 평가

# 모델 생성 (n_neighbors : 비교할 이웃값의 수 설정)
knn_model = KNeighborsClassifier(n_neighbors=1)
# 모델 학습
knn_model.fit(X_train,y_train)
# 모델 예측
pre = knn_model.predict(X_test)
# 모델 평가
accuracy_score(y_test, pre)

 

2. xor 연산 : 값이 둘 다 True이거나 False인 경우 False값 리턴, 값이 각각 다를 경우 True값 리턴

① 라이브러리 import

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
import warnings
warnings.filterwarnings("ignore")

 

② 데이터 프레임 형태로 데이터 만들기

df = pd.DataFrame({
          "A" : [0,0,1,1,1,0,1,0],
          "B" : [0,1,0,1,0,0,1,1],
    "A xor B" : [0,1,1,0,1,0,0,1]
    
})
df

 

③ .iloc를 이용해 훈련 세트와 문제 세트를 생성하고 shape 확인

X_train = df.iloc[:6,:2]
y_train = df.iloc[:6,2]
X_test = df.iloc[6:,:2]
y_test = df.iloc[6:,2]
print(X_train.shape)
print(y_train.shape)
print(X_test.shape)
print(y_test.shape)

 

④ 모델 생성, 모델 학습, 모델 예측, 모델 평가

knn_model = KNeighborsClassifier(n_neighbors=1)
knn_model.fit(X_train, y_train)
pre = knn_model.predict(X_test)
accuracy_score(y_test, pre)

댓글