[인공지능] 인공지능의 기초 #인공지능 #overview

2023. 4. 3. 04:15_Study/AI

728x90

#0401 #인공지능

해당 자료는 강의 학습 자료입니다.


용어에 익숙해지자는 목표

 

AI field는 가장 변화가 빠르기 때문에 영어를 사용해야한다. 번역본은 너무 느리다. 기술자, 개발자, 연구자라면 영어가 익숙해지도록 노력해야한다. 또한 쉬운 강의로 유튜브에 make with friends with machine learning 이 있으니 부족한 부분이 있으면 참고하길 바란다.

https://www.youtube.com/watch?v=lKXv19eRLZg&list=PLRKtJ4IpxJpDxl0NTvNYQWKCYzHNuy2xG 

 

- 애드엑스라는 플랫폼의 하버드의 Introduction with python.

 

 

 

 

 

인공지능에서 지능이란 무엇인가?

돌멩이는 지능이 없는데, 온도에 따른 다이미의 바이메탈 움직임을 보면 지능이 있는걸까? 알파고는 과연 어느 정도 수준의 지능일까

 

 

정답은 없고, 다양한 관점으로 이를 바라볼 수 있다. 긍정적으로 기대하는 사람도 있지만 그러나 부정적인 염려를 하는 경우도 있다.

 

표준국어대사전에 따르면

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

- 인공지능 : 인간의 지능이 가지는 학습, 추리, 적응, 논층 따위의 기능을 갖춘 컴퓨터 시스템

 

논문에 따르면 『Artificial Intelligence: Foundations of Computational Agents』(Poole 저, 2017)

the field that studies the synthesis and analysis of computational agents that act intelligently 

 

- agent : 계산가능한 computation

- 지능적으로 정의

 

지능적으로 행동하는 계산 에이전트르 만들고 분석하는 학문 분야

 

또는 강한 인공지능(인조인간) vs 약한 인공지능(특정한 task), domain에 따라 범위를 나누기도 한다.

 

예전에는 앨런 튜링 테스트를 통해서 기계와 인간을 비교했지만 튜링테스트를 통과해도 생각한다고 말하면 안된다는 철학자 존 설의 중국인의 방도 있다. 

 

 

중국어 방 : 존 설이 튜링테스트로는 기계의 인공지능 여부를 판정할 수 없다는 것을 논증하기위해 고안한 사고실험이며 굳이 중국어인 이유는 존 설이 아예 모르는 외국어를 골랐기 때문이다. 진행 방법은 어느 방 안에 중국어를 모르는 사람을 넣어둔 후 프로그램 지시가 적힌 책과 필기도구를 제공한다. 이 상태에서 중국인 심사관이 중국어로 질문을 써 방안으로 넣는다면 참가자는 중국어를 전혀 모르더라도 책에 아무 답을 중국어로 써서 심사관에게 건네줄 수 있다. 일반인들은 참가자가 중국어를 할 줄 안다고 생각하겠지만 참가자는 기계적으로 프로그램을 수행하고 답안을 제출하는 것 뿐이지. 튜링테스트를 통과하더라도 이게 지능인지 모방인지 알 수 없다는 주장이다.

 

 

티처블 머신(잘배우는 머신): 코딩 전혀없이 나만의 최적화된 머신을 만들 수 있다.

https://teachablemachine.withgoogle.com/ 

 

Teachable Machine

Train a computer to recognize your own images, sounds, & poses. A fast, easy way to create machine learning models for your sites, apps, and more – no expertise or coding required.

teachablemachine.withgoogle.com

 

 

사용해본 결과 상당히 높은 정확도를 보였다. 여기서 고양이 모음을 추가해서 다양한 고양이(치즈태비제외)를 학습시켜본 결과 그래도 가비를 잘 구분하는 모습을 보였다. 여기서 예외적으로 북극여우를 고르라고 하면 색깔과 형태가 비슷한 친구네집 강아지 송이를 고르는 모습이었다.

 

 

from keras.models import load_model  # TensorFlow is required for Keras to work
from PIL import Image, ImageOps  # Install pillow instead of PIL
import numpy as np

# Disable scientific notation for clarity
np.set_printoptions(suppress=True)

# Load the model
model = load_model("keras_Model.h5", compile=False)

# Load the labels
class_names = open("labels.txt", "r").readlines()

# Create the array of the right shape to feed into the keras model
# The 'length' or number of images you can put into the array is
# determined by the first position in the shape tuple, in this case 1
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)

# Replace this with the path to your image
image = Image.open("<IMAGE_PATH>").convert("RGB")

# resizing the image to be at least 224x224 and then cropping from the center
size = (224, 224)
image = ImageOps.fit(image, size, Image.Resampling.LANCZOS)

# turn the image into a numpy array
image_array = np.asarray(image)

# Normalize the image
normalized_image_array = (image_array.astype(np.float32) / 127.5) - 1

# Load the image into the array
data[0] = normalized_image_array

# Predicts the model
prediction = model.predict(data)
index = np.argmax(prediction)
class_name = class_names[index]
confidence_score = prediction[0][index]

# Print prediction and confidence score
print("Class:", class_name[2:], end="")
print("Confidence Score:", confidence_score)

 


 

 

 

미래에 인공지능이 굉장히 혁신적인 기술로 공장, 자율주행자동차 등 삶에 스며들텐데 '인공지능이 사람을 몰아낸다' 라는 인식보다 '인공지능을 쓰는 사람이 인공지능을 쓰지 않는 사람을 몰아낸다'라는 인식이 가장 적절하다.

 

어떤 식으로 접근해야할지 생각을 해본다면.

 

과학적 : 지능이란 무엇이고, 사람은 어떻게 이를 사용하는지 인간의 지능을 충분히 연구한 다음 이를 충분히 모방하는 지능 기계를 제작

공학적 : 굳이 몰라도 결과만 같으면 되는거 아닌가? 라는 인간의 지능을 따르지 않아도 됨 (비행기 날개는 새의 날개를 그대로 모방하지 않음).

 

 

 

규칙 기반 방법론. rule-based

- 사람이라면 동물을 바라봤을때 얼굴부터 보겠지?

- 얼굴을 찾고, 귀가 있는지 찾고... 규칙을 기반으로 한 코딩

- 규칙에 해당하지 않는 경우가 나타나면 오류가 발생한다.

 

기계학습 방법론.  learning-based

- 아기와 비슷, 계속 data input을 주면 흡수를 잘하는 모델만 잘 만들고 줄 데이터만 잘 주면 알아서 학습하는 모델

- 충분한 데이터를 수집한 다음 기계학습 모델을 학습하는 방법 (90년대 이후)

- data hungry

- 데이터만 있다면? 알아서 학습

 

C와 파이썬

- 파이썬은 벡터와 행렬 처리를 코딩하는 데 편리한 언어

- 기계 학습은 벡터와 행렬 처리를 많이 수행하므로 파이썬을 주로 사용한다.

- 핵심 라이브러리는 효율성 때문에 C로 코딩 되어 있다.

 

 

 


 

인공지능은 진입장벽이 낮은 편이지만, 상품화는 많은 노력과 인내가 필요하다.

- 인공 지능 개발에 강력한 소프트웨어가 모두 무료이고 클라우드 서비스도 있다.

- 그러나 시장에 나가려면 인간 수준의 성능이 필요하고 시장 경쟁이 치열하다.

 

 

클라우드 방식

: 프로그램과 데이터가 서버에 저장되고 관리

- 서버에 환경이 대부분 갖추어져 있어 로그인하면 바로 프로그래밍 가능

- 인터넷 연결만 있으면 어느 곳에서나 개발 가능, 협업 가능

- 구글의 Colab, 아마존의 SageMaker, 마이크로소프트의 Azure

- 내 프로젝트에 최적인 환경을 갖출 수 없는 한계

 

스탠드 얼론 방식

- 자신에 최적인 환경 구축 가능, 프로그램과 데이터가 자신의 컴퓨터에 저장

- 소프트웨어를 설치하고, 환경을 스스로 구축

- 본격적인 개발에서는 스탠드 얼론 방식이 적합

 

 

 

주피터 노트북 : 파이썬을 대화식으로 편리하게 실행할 수 있는 환경

 

 

아나콘다

- 라이브러리 충돌가능성: 오픈소스 특성으로 인한 라이브러리 충돌가능성을 가상환경을 사용하여 해결하였다. 아나콘다는 가상 환경을 지원한다.

- 예전 딥러닝 환경은 라이브러리와, 파이썬 버젼도 맞춰야했길래 아주 번거로웠지만 가상환경을 통해 간편하게 실습 환경을 구성할 수 있다.

 

 

 


 

인간의 셈 지능 컴퓨터의 셈 지능
느리고 정확도에 한계 무척 빠르고 정확함, 컴퓨터 하드웨어에 내장 되어 있음

 

초창기 AI는 자동화가 목표였지만 이젠 인간의 영역을 뛰어넘는 AI가 등장하고 있다.

 

 

이론적인 작동원리, 모델과 같은 내용은 이 강의로는 여전히 불투명할 수 있는데 이는 2학기에 열리는 기계학습개론을 참고할 것.