반응형
콩니🔧
개지니어 콩니
콩니🔧
전체 방문자
오늘
어제
  • 분류 전체보기 (79)
    • Life outside of work (13)
    • DevOps (29)
    • Developments (23)
    • CS and others (7)
    • Book reviews (7)

블로그 메뉴

  • 홈
  • 태그

공지사항

  • 제가 누군지 궁금하시다면

인기 글

태그

  • Jenkins
  • web
  • kubernetes
  • Java
  • 프로그래머스
  • Infra
  • DevOps
  • programmers
  • Network
  • HTML

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
콩니🔧

개지니어 콩니

200626 POSTECH 인공지능 특강(인공지능 입문)
Developments

200626 POSTECH 인공지능 특강(인공지능 입문)

2020. 6. 27. 17:35
반응형

-. 컴퓨터공학의 역사 1950~

-. 인공지능의 역사

튜링테스트 알렌튜링이 튜링테스트를 통해 인공지능 정의했었음

사람이 텍스트로 질문/문자 던졌을 때 상대방이 답을 하는데 사람인지 컴퓨터인지 구분이 안간다 라고 하면 튜링테스트를 통과한 인공지능인것

답만을 보고 컴퓨터인지 사람인지 모른다면 그건 인공지능이다 ! 라는게 튜링테스트에서 정의한 정의

지금의 정의와는 다름

-. 인공지능의 역사

오래 전 알렌 튜링이 '튜링 테스트'를 통해 인공지능을 정의한 적 있음. 어떤 질문/문제를 던졌을 때 알 수 없는 상대방이 답변을 햇꼬, 그 답변을 보고 답변자가 사람인지 컴퓨터인지를 구분할 수 없다면 그것은 인공지능이다, 라는 것이 튜링 테스트

→ 현재의 정의와는 다름

-. 인공지능의 기준

이전에는 human level intelligence를 타겟으로 하였으나 더 이상은 그렇지 않고, human level을 떠나 가장 좋은 레벨을 목표로 삼고 있음

-. 인공지능의 활용

인공지능은 이전과는 달리 사람 수준으로 인식이 가능함. 랜덤 이미지를 주면 해당 이미지가 car show에 있는 car인지 트랙터인지 등을 각도, 주차된 모양 등에 상관없이 인식할 수 있음(딥러닝에 의해) 이 수준까지 인공지능이 발전하면서 가능해진 것이

(1) 자율주행차(Autonomous driving) → 테슬라, 구글, 네이버, 카카오 등에서 연구중

(2) 필기인식(Handwriting recognition)

→ vision 기술에 의해 인간 수준으로 발전했음

(3) 자연어 처리(NLP)

→ 언어를 컴퓨터가 인식하는 분야. sentiment analysis(언어 인풋을 주고 이것이 긍정적인 것인지 부정적인 것인지를 판단하는 것 - 이전에는 단순히 긍정 단어의 수, 부정 단어의 수를 카운트하여 배점을 매기는 방식으로 문맥을 판단할 수 없다는 문제점이 있었음. 현재는 더 발전된 방식을 사용)

(4) 기계번역(machine translation)

→ 자연어처리 분야가 발전하면서 기계를 통한 번역도 발전 중

(5) 가상 비서(virtual assistant)

빅스비, 시리, 알렉사(에코) 같은 것들

갑자기 주목을 받게 된 이유가 Amazon의 에코(이름은 알렉사) 때문인데, 인식을 너무 잘 하고 노이즈 상황에서도 사용자의 음성을 정확히 인식해서 주목받았음

이 에코에서 사용된 기술은 dialogue system(자연어 처리의 한 분야)인데, 이는 2016년 MIT technology review에서 one of the ten breakthrough technologies로 선정되었음 이 기술이 발전하면 나중에는 컴퓨터를 키보드나 마우스로 조작하는 것이 아니라 말로 컴퓨터를 조작할 수 있음

관련해서, 챗봇, 튜터로봇 등의 소프트웨어/로봇 챗봇이 계속해서 늘어나고 있음

자동차 회사에서도 dialogue system 을 연구하고 있는데, 기술의 수준은 어느 정도 올라온 상황인데 아직 deployment는 이루어 지고 있지 않음. 제도적 문제가 있는 상황. 제도적 문제란, 예를 들면 어떤 사람이 사고가 났는데 자동차의 인공지능이 나에게 말을 걸어서 주의가 흐트러져 사고가 났다, 자동차 제조사에도 배상책임이 있다 라고 주장할 가능성 등이 있어 아직 deploy되지는 않았음

-. human versus machine

1997년 deep blue 라는 인공지능이 체스 챔피언을 이겼고,

2011년 IBM의 왓슨이 퀴즈쇼에서 우승했고,

2016년 AlphaGo가 바둑으로 사람을 이겼음

이 중에서 바둑이 사람을 이긴 것은 매우 놀라운 일이었음 - 체스의 경우, 모든 경우의 수를 다 연산해 보고 해당 경우의 수에서 5~6수 정도를 더 내다본 다음 판단을 내림. 이 과정을 search하는 tree 탐색 알고리즘을 사용함

그런데 바둑의 경우 tree 탐색 알고리즘으로는 해결할 수 없을 정도로 많은 경우의 수를 가짐(361의 200승만큼의 경우의 수)

→ 기존의 알고리즘으로는 해결할 수 없어 reinforced deep learning이라는 것을 사용하여 새로운 기계학습 알고리즘을 적용한 알파고가 나왔고, 이것이 사람을 이긴 것

그렇다고 해서 인공지능이 인류에게 위협이 되느냐 하는 문제는 또 다른 이야기. 아직은 불가능한 상황

인공지능이라고는 하지만 결국은 소프트웨어에 불과하고, 인공지능이 사람을 지배하기 위해서는 사람이 가지고 있는 감정과 본능을 가져야 함. 이를 학습시키는 것은 또 다른 영역이므로 아직은 불가능함. 인공지능은 이성적인 판단을 심어준 것 뿐이고, 인공지능이 감정을 갖게 되는 것은 아직은 먼 이야기

-. 인공지능의 암흑기

인공지능에는 세 번의 암흑기가 있었음 (1966, 1974, 1987쯤) 인공지능을 다루는 학문이 발전하다가 성능의 한계에 부딪혀서 지원, 펀딩 등이 끊겼던 시기가 있음. 그러다가 누군가 새로운 패러다임을 들고 나와 기존의 한계를 깨면 다시 인공지능 붐이 시작되고, 또 어느 정도의 성능 한계에 부딪히는 식으로 인공지능이 발전해 왔음

지금은 인공지능의 전성기 상황이나, 역사를 되돌아 봤을 때 또 인공지능 암흑기가 올 수 있음. 그러나 아직까지는 매우 빠른 속도로 발전하고 있음

-. 인공지능의 응용들이 공통적으로 가진 문제점

(1) computational complexity

많은 알고리즘이 최적의 솔루션을 찾기 위해 무한대의 시간을 필요로 한다는 것(이를 NP-hard problem이라 함) 바둑을 예를 들면 최적의 솔루션은 있으나, 이를 찾기까지 너무나 오랜 시간이 걸려서 찾지 못할 뿐.. 모든 경우의 수를 다 고려할 수는 없으므로, 인공지능을 통해 최대한 가까이 approximate solution에 다가가고 있는데, 이와 같이 연산을 위한 시간이 매우 많이 필요하다는 것이 computational complexity 임. 이를 극복하기 위해서는 아주 뛰어난 성능의 컴퓨터가 필요 (연산)

(2) information complexity

인공지능을 통해 문제를 풀기 위해서는 아주 많은 데이터가 필요함. 알파고(3천만건의 데이터 학습), NVIDIA, 구글 번역기(몇십억개의 번역 결과 학습. IBM에서는 언어학적으로, 문법적으로 이를 해결하려고 했으나 실패한 적이 있음 ) 등 인공지능의 응용은 아주 많은 데이터를 필요로 함

→ 즉, 인공지능은 big data + hardware + machine learning algorithm 이 세가지가 모두 갖춰져야 한다는 것

-. 인공지능의 프레임워크

Real world task → real world task를 어떤 formal 한 형태로 모델링 → formal task(model) → formal task를 풀 수 있는 algorithm을 개발 → algorithm을 통해 문제 해결

이와 같이 모델링, 알고리즘 두 단계를 끼어야 함

즉, 인공지능 문제의 접근 방법은 what to compute(modeling)과 how to compute it(algorithm) 으로 나뉨

-. sentiment analysis의 예시

아까 언급된 sentiment analysis를 예를 들어서 보면, 가장 단순한 접근방법은 단어만 가지고 카운트해서 cliche라는 단어가 포함되면 negative로 -=score 하고 promise라는 단어가 포함되면 positive로 쳐서 +=score 하고 최종적으로 스코어가 양수이면 positive를 리턴하는 것

이를 수학적으로 표현하면 아래와 같이 나타남

 

이걸 linear classifier 라고함(중요)

이때 각 단어들(features)는 인간이 정의해서 인공지능에게 제공해야 함 대신 그 가중치를 인공지능이 알아서 찾음 그래도 사람은 features, data를 제공해야 함

영화 리뷰를 대상으로 sentiment analysis를 한다면, 사람은 다수의 영화 리뷰와 해당 리뷰들이 긍정인지 부정인지에 대한 레이블을 주어야 함(data, label pair set)

이걸 learning algorithm한테 주고 돌리면 딥러닝이 가중치를 알아서 판단하게 되는데, 그렇게 해서 나오는 가중치가 parameter(learning parameter)

이게 생기면 model F라는 function이 생기는 것이고, 이를 통해 model이 새로운 리뷰 데이터가 들어왔을 때 긍정인지 부정인지를 판단해 줌

그러면 이때 이 모델의 성능은 어떻게 판단하는가 하면, unseen data를 만났을 때 인공지능이 만들어 둔 generalization을 통해서 얼마나 잘 판단하는지가 인공지능 성능의 핵심 즉, generalization 성능

-. 머신러닝의 모델

Reflex(낮은 수준의 인공지능 단순한 판단)

States(search problems, Markov decision process, Adversarial games,,)

-. 어떤 state에서는 어떤식으로 액션을 취해야 할지 판단하는 모델

 

Variables (Constraint satisfaction problems, Bayesian networks)

Variable 모델

가장 바람직한 value assignment를 하는 것이 목표

호주는 8개의 province가 있는데 세가지 색으로 칠한다고하면 빨강, 초록, 파랑으로 칠한데 인접한데는 똑같은색 안쓰고싶다!

라고하면 각 province에 들어갈 수 있는 값(value)

이 문제가 constraint safisfaction problem 으로 모델링

또 event scheduling도 variable model 중 하나

해결해야 할 이벤트가 있고 timeslot이 있으면 각 timeslot은 0 또는 1의 이벤트 할당 가능.. 각가의 이벤트가 들어갈 수 있는 timeslot이 있을때의 스케쥴링 방식..이것도 variable model

이런것들을 좀 확률적인걸로 모델링한게 bayesian networks

 

Topic modeling

대용량의 document를 clustering하고싶을때 사용되는방법으로 이것도 variable based model

그다음으로 high level intelligence인 logic model 이 있음

로직은 question and answer에서 많이 사용되던거

reasoning에사용

문장이주어지고 질문했을경우 논리적인 답을하는것

deep learning이 나오면서 딥러닝의 방식으로 대체 보완이 되고있다고..

-. Summary

AI 응용: high-impact, diverse

공통적인 문제점:computaional/information complexity(고성능의 컴퓨터와 빅데이터 필요)

Paradigm: modeling + algorithms

models: learning + [ reflex, states, variables, logic]

기본 framework: training 데이터 준비해서 algorithm에 넣고 algorithm이 modeling F를 알아서 찾아줌. 거기에 X라는 새로운 값을 넣어주면 거기에 맞는 Y라는 값이 나와야 한다는 것

→ 이때 가장 최적의 F를 찾아내야 하는 것(optimization)

→ 인공지능 모델링은 결국 최적화 문제로 귀결됨

features

사람은 features랑 data를 제공해야하는데

조명이나 방향에의해 바뀌지 않는 feature를 제공해야하는것

일단 관련도니 feature를 찾는거 자체가 일인거...

이런 feature들을 우리가 하나의 vector로 만들 수 있는데

인공지능 에서는 이런걸 feature vector로 표현함 근데 그걸 만드는 건 결국 사람 사람이 생성해야함

근데 인공지능이 그 vector를 대신 찾아줄 수도 있음

연산을 통해 아웃풋을 내놓음

머신러닝이 찾은 weight를

feature의 quality가 얼마나 중요한가

인간이 최적의 답을 찾기 위해서 feature를 제공을 한다고 하는데

인공지능이 찾아낼 수 있는 많은 수의 feature에서 인간이 define을 하는 순간 그 범위 내에서로 feature 의 범위가 굳어진다는것

그러면 F는 좋은 predictor를 포함하고 있을 것인지? 가 문제

여기서 인간이 제공하는 feature를 hypothesis class라고함

만약 good predictor가 그 hypo class 밖에있다? 그러면 인공지능이어도 못찾음..

그래서 feature define이 매우 중요함

근데 최근의 딥러닝은 지가 알아서 feature 확장함ㄴ서 찾음

근데ㅜ것도 한계가 아직 있어서

아무튼 좋은 성능의 modeling을 하려면 feature를 잘 알고 있어야 함

-. feature learning

이전: 사람에 의해 정의된 feature에 linear predictor 적용

현재: 자동적으로 학습된 feature에 linear predictor 적용

-. overfitting

수많은 feature들의 nonlinear 관계.. 어떻게 판단해야할지?

남자인지 여자인지 키랑 몸무게가지고 feature 주면

기계는 선으로 된 반비례 리니어 모델을 가지고 판단할것

그럼 틀리는 부분 생김

학습데이터 기반으로 구불구불한 선을 그리는 nonlinear model을 학습시키면? 그 학습 데이터에 대해서는 옳은 판단을 하겠지만

generalization을 하지 못함 이게그러면 좋은 함수/좋은 모델임? 아님

이걸 overfitting한 모델이라고 함

학습데이터에대해서는 성능이 좋지만 unseen data에 대해선 성능이 안좋음

모델이 너무 복잡하면 안됨

모델을 simplify 해야 generalization 성능도 높아짐

오버피팅을 피하기위해서는 training data를 전체다 모델만드는데쓰지말고 1/3은 테스트하는데 쓰고..validation process를 거치게 해야 함 모델이 복잡할수록 hypo class 커짐 training data의 에러는 줄어들다가 트레이닝셋 벗어나는순간 또 다시 오답율 올라감.. 이런문제 해결해야함

hyperparameter

leaning parameter를 잘 찾기 위해서 사람이 넣어주는 parameter.. 이거 넣어보고 generalziation 성능 보고 다른거넣어보고 또 validation 돌리고..validation set은 모델링에쓰는데이터말고 이런거 테스트하는데 쓰는 dat set

machine learning summary

modeling f → optimization

design loss well to reflect what you really want

모델링 잘하는게 성능올리는거의 원탑

그건 결국 optimization 을 잘하는것

이걸 잘풀기위해 좋은feature 찾아야함

features:

design features well to reduce data

hypo class 너무많으면 너무 많은양의데이터필요함

데이터 많지않으면 feature를 잘 골라내야함

design neural network well to learn high-level features

Generalization:

regularize well to generalize

모델링을 opti 하고 feature select했다면

generalization을 항상 명제에 둬야하고

Think about generalization when you do all above

너무 복잡하면 안됨

반응형
저작자표시 비영리 변경금지 (새창열림)

'Developments' 카테고리의 다른 글

[이럴땐이렇게] Maven Pom.xml invalid content 에러 발생시  (0) 2020.07.17
[이럴땐이렇게] EL문법 사용 후 Internal Server Error 500 (HTTP Status 500 – Internal Server Error) 발생하는 경우  (0) 2020.07.08
[프로그래머스] 200626 SQL- 동명 동물 수 찾기  (0) 2020.06.26
[프로그래머스] 200626 SQL-어린 동물 찾기  (0) 2020.06.26
[프로그래머스] 200626 SQL-역순 정렬하기  (0) 2020.06.26
    콩니🔧
    콩니🔧
    개발알못 인프라알못 콩니

    티스토리툴바