본문 바로가기

코딩 -/인공지능

인공지능 용어 및 요약정리

반응형

인공지능 : 컴퓨터나 기계에 의해서 사람의 의식이나 학습능력, 문제해결 능력 등 인지("congnitive")기능을 따라하는 것

 

튜링테스트 : 인공지능 (AI) 분야에서 컴퓨터가 인간처럼 생각할 수 있는지 확인하는 방법 중 하나로 , 1950년대의 영국의 컴퓨터 과학자의 이름을 따서 명명.

-> 정답을 얼마나 잘 맞추느 등의 기존 평가기준과 다르게, 얼마나 사람과 똑같이 행동하는가에 초점을 맞췄다.

 

 

인공지능 , 머신러닝 , 딥러닝의 차이점( 또는 정의)를 쓰시오.

 

인공지능 : 컴퓨터나 기계에 의해서 사람의 의식이나 학습능력, 문제해결 능력 등 인지("congnitive")기능을 따라하는 것

머신러닝 : 머신러닝(machine learning)은 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 것

딥러닝 :  머신러닝 중에 인공 신경망(artificial neural network)을 기반으로 한 방법들을 통칭하여 딥러닝(deep learning)이라고 함.

 

딥러닝 기술이 성공하게 된 주요 3가지 요소.

1. 과적합 문제의 기존 신경망 모델의 단점을 극복하였음.

2. 발전된 GPU 기술

3. 대량의 빅데이터들이 나오고있음.

 

딥러닝 모델에서 학습이란?

-> 데이터를 기반으로 모델의 weight 를 찾아가는 과정

 

모델 학습시 데이터는 Training 데이터 , Validation 데이터 , Test 데잍처로 나뉜다 . Validation 데이터의 용도는 ?

 

단순 Training 한다면 그 데이터에만 편향될 수 있어 중간중간 성능을 점검하며 학습을 조율함.

 

모델 학습시에 데이터는 Training 데이터, Validation 데이터, Test 데이터로 나뉜다. Test 데이터의 용도는?

->학습이 완료된 후 한번도 보지 못한 데이터로 최종 성능을 측정합니다.

 

머신러닝 기법 .

A . SVM  - > Support Vector Machine 

-> 분류를 위한 기준 선을 정의하는 모델. 

B. Linear Regression (선형회귀)

-> 선형 회귀는 종속 변수 y와 한 개 이상의 독립 변수 X와의 선형 상관 관계를 모델링하는 회귀분석 기법

C. Decision Tree (결정트리)

 ->결정 트리는 의사 결정 규칙과 그 결과들을 트리 구조로 도식화한 의사 결정 지원 도구의 일종

 

혼동행렬  (바이러스로 예시를 들겠음)

TP ( true positive) : 참긍정 , 바이러스가 맞다고 예상한것이 실제로도 맞는 경우

TN (true negative) : 참부정,  바이러스가 아니라고 예상한것이 실제로도 아닌경우

FP (false positive) :  거짓긍정 , 바이러스가 맞다고 예상한것이 실제로 아닌경우

FN (false negative) :  거짓부정 , 바이러스가 아니라고 예상한것이 실제로 맞는경우

 

취소율 : 총 바이러스 중에 탐지해낸 바이러스비율

정밀도 : 바이러스라고 탐지한 데이터중 실제 바이러스의 비율

 

 

Colab에서 실행 가능한것

 

 

Python 프로그램

 

리눅스 명령어 실행 

!붙여서 사용한다 . !ls !pwd 등

- OS 확인 ( !cat /etc/issue.net )
- CPU 확인 ( !cat /proc/cpuinfo )
- Memory 확인 ( !cat /proc/meminfo )
- Disk 정보 확인 ( !df -h )
- GPU 정보 확인 ( !nvidia-smi )
- 디렉토리 변경 ( !cd .. → %cd .. → cd ..)

 

구글 드라이브 연동

!pwd # 현재 디렉토리는 /content
!mkdir gdrive # gdrive를 현재 디렉토리에 생성 /content/gdrive
from google.colab import drive # google drive와 연동하기 위한 라이브러리
drive.mount('/content/gdrive') # google drive와 연결(mount) 완료

 

Github에서 소스 읽어오기

 

파이썬 딕셔너리

a = {} 처럼 초기화

a = {1: 'hi'}

a = { 'a': [1,2,3]}

>>> a = {1: 'a'}

>>> a[2] = 'b' 등으로 요소 추가

del a[1]

 

key는 영문 소문자 {'a' , 'b' , ~ 'z'}이고 value는 각 영문자의 index {1,2,3,4, ~26}를 가지는 자료구조를 만들고 ,

해당 자료구조를 이용하여  영문자 'a' , 'i'에 대해서 몇 번째 인덱스인지를 출력하는 코드를 작성하시오.

 

a =  {}

for i in range(1,27):

     a[chr(i+96)] = i;

print(a['a'])

print(a['i'])

 

 

• Sequential 모델은 모델의 각 layer가 순차적으로 연결된 형태를 지닌 가장 간단한 모델
• Dense 레이어는 모든 입력과 모든 출력이 연결 (총 weight: 입력 x 출력)
• Activation은 출력값에 적용하는 함수로, 일반적으로 sigmoid, relu, softmax 등이 사용됨

 

activation function 

 

sigmoid : 0~1로 값을 분류해줌.

ReLu 0 이상일 경우만 출력해줌

softmax :  다수의 점수를 확률로 변경함.  -> 기존 softmax 를 변환하는것 Logits

Binary step :  0보다같거나 클 때 1 작을때 0으로만든다.

 

 

분류문제 -> softmax 사용

참거짓을 판단하는것 - > sigmoid

일반적으로  잘 모를때 -> ReLu

 

 

최적화 함수  ( optimizer)   (Newton's method)

optimizer 

rmsprop , adam , SGD (이셋을 번갈아가보면서 써봄)

 

손실함수 

binary(이진분류의경우 ) , category(분류문제) , regression() , (MSE) Mean Squared Error  (Value 예측)

 

Value 의 경우 output을 그냥 받아, MSE 를 손실함수로 사용

맞는지 아닌지를 확인할 때 output에 sigmoid를 넣어, Binaty CrossEntrophy를 한다.

분류문제는 output에 softmax를 먹이고 categorical crossEntropy를 한다.

 

 

 

기준 metric 모델 성능을 측정 지표

미분 불가능한 성능 지표인경우 (예 : 정확도 (accuracy))

loss 함수가 여러개의 성능 지표의 합일 때, 각각의 성능지표가 어떻게 변하는지 보고싶을 때  (예: loss함수 = loss + regularization)

 

 

One-Hot Encoding 이란 ?

특정 데이터를 벡터로만들고 해당하는 값만 1로 만들고 나머지는 0으로 만드는것 

 

network.fit(train_images, train_labels , epochs=5, batch_size=128)

 

network.evaluate( test ,testlabel )

 

 

 

이미지를 처리하는 모델에서 Dense가 아닌 CNN을 쓰는 이유

위치정보와 함께피쳐가 학습되기때문에, Dense보다 효율이 좋다. (Dense 대비 파라미터의 수가 아주 적음)

 

CNN

데이터셋에 특화된 학습필터이고 다양한 필터의 개수와사이즈가 있음

이미지를 다양한 특징 벡터로 변경한다.

 

stride 는 몇 칸을 이동할지에 대한 내용

패딩처리를 하면 아웃풋사이즈가 동일함.

 

Conv2D ( filters, kernel_size, strides , paddin)

 

입력 W H C -> 출력 W H filters

 

Flatten

데이터를 1차원으로 변환

 

자신만의 모델 만들기

 

 

 
from keras.layers import Input , Dense , Conv2D , Flatten, Dot
from keras.models import Model
from keras.utils.vis_utils import plot_model


input1 = Input(shape = (10,10,3))
input2 = Input(shape = (20,20,3))


conv = Conv2D(5, (3,3), activation='relu')

convinput1 = conv(input1)
convinput2 = conv(input2)

inputflat1 = Flatten() (convinput1)
inputflat2 = Flatten() (convinput2)

output1 = Dense(10)(inputflat1)
output2 = Dense(20)(inputflat2)

model = Model(inputs=[input1,input2], outputs = [output1, output2])
model.summary()
plot_model(model, to_file='model1.jpg',show_shapes=True)

 

모델의 파라미터는 항상 상수를 포함하기때문에 +1을 해준다

 

 

모델 가져다 쓰기

 

대표적인 참조 싸이트 3가지

paperswithcode.com

keras.applications

tensorflow Hub (tfhub.dev)

 

ResNET50 을 사용하는 예시

 

model = ResNet50(weights='imagenet', include_top= True)

weight = 'None' 으로 주어 껍데기만 활용할 수도있다,.

 

 

Conv 필터 시각화

Heatmap

 

Autoencoder

데이터를 인코딩하는 방법을 배우는 효과적인 딥러닝 모델

기존 모델과의 차이점은 정답없이 입력값만으로 학습을 한다.

Encoder 입력 데이터를 feature space로 변환

Decoder 는 feature space를 원래대로 복원

 

차원축소(Dimension Reduction)

고차원 데이터의 경우 기존 처리기법의 한계로 저차원 데이터로 변환 후 프로세싱

 

차원 축소시 의미있는 정보를 남기기 위해 PCA, SVD 등을 사용

 

기존 방법과 다르게 비선형적인 방법으로 차원을 축소

 

 

 

 GAN

 

생성자(Generator)와 판별자(Discriminator) 모델을 구성한 후에
게임 이론(Game Theory)을 적용하여 학습

 

GAN의 이점
• 장점 : Autoencoder와 마찬가지로 입력 데이터만 있으면 되고, 정
답지(label된 데이터)가 없어도 된다.
• 단점1 : Generator와 Discriminator 모델 두 개를 동시에 학습하
여야 한다.
• 단점2 : 학습에 오랜 시간이 걸린다 (무에서 유를 창조)
• 단점3 : 학습이 잘 안될 수 있다

반응형