대학교 수업/AI 실무 특강 (방학특강)

1. 딥러닝 개요 (1단원 전체 묶음)

kicdor 2024. 9. 6. 01:22
반응형

[학습 목표 ]

딥러닝 개념 이해, PyTorch 코딩 스타일, 기초적인 통계 개념, 시각화 기법

* 주요 용어 : 지도학습, 비지도학습, 강화학습, 딥러닝 문제 해결 프로세스, 독립변수, 종속변수

 


1.0 에이다의 통찰

1) 찰스 베비지 (Charles Babbage)

사진출처-나무위키(찰스 베비지)

- 1791년 12월 26일 ~ 1871년 10월 18일

- 영국의 수학자.

- 1837년,   계산하는 기계 설계 (해석 엔진, Analytical Engine)

+) 설계만하고 제작은 못함. 당시는 백열전구도 없던 시절이기 때문

 

 

2) 에이다 바이런 러브레이스 (Ada Byron Lovelace)

출처-나무위키(에이다러브레이스)

- 1815년 12월 10일 ~ 1852년 11월 27일

- 인류 최초 프로그래머

- 시인 Byron의 딸

- 해석 엔진에서 수행할 프로그램에 대한 논문 발표

(해석 엔진은 숫자 이외 것도 처리할 수 있을 것이다. 예를 들어 화음과 음조를 해석 엔진의 표기에 맞출 수 있다면 해석 엔진은 꽤 복잡한 곡을 작곡할 수도 있다.) 

 

 

3) 현재 인공지능

(1) 알파고

: 알파고 vs 이세돌 바둑대국

 

(2) 자율주행자동차

: 테슬라의 자율주행 자동차, 한국의 자율주행 야간버스 운행

 

(3) 작곡하는 마젠타 프로젝트

 

(4) ChatGPT  (Chat Generative Pre-trained Transformer).

+) pre-trained

: train을 통해 최적화된 가중치를 제공

+) Transformer 

: Google AI 논문 - "Attention is all you need." 기술을 개발 / Open AI이 실제로 돈 벎. (그래서 이제 Google 논문 발표 감소)

 


1.1 지능이란?

1) 긴 지능 스펙트럼 

: 지능은 상대적인 개념이다. 

 

+) 예시

:  "돌맹이 -> 바이메탈-> 꼬마선충 -> 개미 -> 범인 -> 천재"

 

- 돌맹이보다는 바이메탈의 지능이 더 높다.

(돌맹이는 아무 기능을 할 수 없는 반면에 바이메탈은 온도를 조절하는 기능을 할 수 있다.) (bi metal : 다리미 온도조절)

 

- 바이메탈보다는 꼬마선충의 지능이 더 높다.

(꼬마선풍은 감각이 있고, 빛에 반응하고, 영양분을 흡수함)  (특히 감각이 지능과 밀접한 관련이 있음)

 

- 꼬마선충보다는 개미의 지능이 더 높다.

(개미는 협동을 할 수 있고, 의사소통을하고, 사회를 구성한다) .......

 

 

2) "알파고"는 위 예시에서 어디에 위치하는가?

: 천재보다 더 지능적인가? 협력을 못하니 개미보다 못하는가? 물리법칙을 이용할 수 있는가? .....

>>  알파고는 "바둑"이라는 기능에 특화되어있다. (특수한 지능 / 일반적인 지능)


1.2 인공지능을 바라보는 관점

1) 다양한 관점

- 긍정, 부정, 기대, 우려라는 관점이 있다.  

(자동화를 할 수 있다는 긍정적인 기대, 직업을 잃을 수 있다는 부정적인 우려 등이 있다)

>> 객관성이 필요로 된다.

 

 

2) 인공지능의 정의

- Artificial Intelligence : Foundations of Computational Agents(Poole 저, 2017)

: "인공지능은  지능적으로 행동하는 계산 에이전트를 만들고 분석하는 학문 분야"라고 주장

 

- ★ 강한 인공지능 (strong artificial intelligence) 

: 다양한 지능의 복합체.

(국영수를 전부 할 수 있는 인공지능. 이해, 추론, 사고, 학습, 적용, 논증, 판단 등을 전부 할 수 있는 지능) (chat GPT 등)

 

- ★ 약한 인공지능 (weak artificial intelligence)

: 한가지 지능에 특화된 인공지능. (알파고, 인공지능 스피커, 언어 번역기, 영상 인식기 등)

 

 

3) 충동하는 관점

(1)  앨런 튜링의 튜링 테스트

: 앨런의 튜링 테스트는 "can machine think?"를 판별한다. 즉, 강한 인공지능을 판별하는 imitation game이다. (튜링 테스트를 통과하는 기계는 생각한다고 간주해도 된다.) 

+) 튜링 테스트 방법

: AI컴퓨터 A와 사람 B가 있다. 사람 C가 A한테도 질문을 해서 대답을 얻고, B한테도 질문을 해서 대답을 얻는다. 사람 C가 A와 B 중 누가 사람인지 구분을 하지 못하면 튜링테스트를 통과한 것이다   

+) 튜링 머신 : 컴퓨터의 기본적인 단위가 되었다. 

+) 튜링 테스트를 통과한 인공지능 시스템 (요즘에는 웬만하면 튜링테스트를 통과함)

: 2022년 6월,   Google LaMDA AI가 최초로 통과

  2022년 12월,   OpenAI의 ChatGPT가 두 번째로 통과

 

(2) 철한자 존 설(John Searle)의 중국인의 방

: 튜링테스트를 통과한 인공지능이더라도 인공지능이 생각을 하고 답을 한 것인지, 형식적인 답변을 한 것인지 구분이 불가능함 >> 튜링 테스트를 통과해도 "튜링 테스트를 통과한 AI는 생각을 할 수 있다"라고 말하면 안 된다고 주장.

+) 예시

: 컴퓨터 프로그램 A, 사람B, 사람C는 중국어를 모름. 컴퓨터 프로그램 A에게 중국어로 질문을 하면, 그게 무슨 말인지도 모르면서 반사적으로 형식적인 답변만 줌. 사람 B도 아무 답변이나 줌. 사람C도 A와 B가 무슨 말을 하는지 모름. 그래서 C는 A와 B 중에 누가 사람인지 구분 못함. (또는 사람들이 해당 주제에 대해 대화할 때 많이 쓰는 말들로 구성해서 그럴듯하게 대답함) >> 튜링테스트를 통과 

 


1.3 인공지능의 역사

0) 인공지능 기반

- 1843,   에이다가 ...해석 엔진(계산기)은 꽤 복잡한 곡을 작곡(지능)할 수도 있다.라는 논문 발표. 

 

- 1946,   에니악 등장. (진공관을 사용. 최초의 범용 디지털 컴퓨터)

+) 2차세계대전이 막 끝남. 그전에도 비슷한 제품은 있었지만 전쟁으로 인해 컴퓨터가 발전한 후 만들어짐.

 

- 1950,   튜링 테스트 제안  (인공지능 여부를 판별하는 테스트)

 

- 1956,   다트머스 컨퍼런스 개최, '인공지능' 용어 탄생. 

  +) 다트머스 컨퍼런스

: 최초의 인공지능 학술대회

 

- 1958,   로젠블랫이 퍼셉트론 제안, 인공지능 언어 Lisp 탄생. Type theory 나옴.

+) Type theory

: 컴퓨터가 등장하게 된 수학적인 배경. 조지불 등 여러 수학자가 정리해서 나온 이론임. Type theory의 요점은 "수학은 불완전하다"임. "우리는 불완전한 수학으로 무엇을 할 수 있을까?" 고민한 결과 튜링머신이 탄생하게 됨. 그리고 이 튜링머신을 실체화 한 것이 컴퓨터임.  (조지 불 : boolean type이 이 수학자 이름에서 따옴.)

 

- 1959,   사무엘이 (기계 학습(ML)을 이용한) 체커 게임 프로그램 개발. (오셀로, 틱텍톡 등)

 

- 1965,    로트피 자데가 퍼지 이론 발표.

+) 로트피 자데의 퍼지이론(Fuzzy theory)

: "내 아내가 얼마나 아름다운지 수학적으로 증명할 수 있을까?"라는 생각에서 시작. 컴퓨터는 0과 1로 밖에 표현 못함. 그래서 표현 방식을 이진수가 아닌 "0.0~1.0"으로 표현함으로써 시스템을 정교하게 구성. (제어시스템 이론 기반)

 

- 1966,  엘리자 공개 (세계 최초의 챗봇)

 

- 1968,   A* 발표. (공간 탐색 알고리즘)

+) A* 알고리즘은 요즘에도 "게임"에서 많이 사용됨. NPC(non player character)가 장애물을 잘 피해서 이동할 수 있게 함.)

 

- 1969,   민스키가 Perceptrons에서 퍼셉트론의 과대포장 지적, 신경망 퇴조 시작, 1회 IJCA 학술대회 계최

+) 과대포장

: 퍼셉트론이 해결하지 못하는 것. XOR를 퍼셉트론이 표현을 못한다. 퍼셉트론을 사용할 수 없다.

 

- 1972,   인공지능 언어 Prolog 탄생, 스탠퍼드 대학교에서 마이신 전문가 시스템 개발 시작.

+) 마이신 전문가 시스템

: 질문을 하면 답변을 주는 시스템

 

- 1973,   라이트힐 보고서를 계기로 인공지능 내리막길, 1차 인공지능 겨울 시작 

+) 라이트힐 보고서

: "실제로 사용해보니 별로 쓸모가 없더라" >> 인공지능에 대한 예산 대폭 삭감

 

- 1974,   웨어보스가 오류 역전파 알고리즘으로 논문 발표

 +) ★오류 역전파 : error back propagation 알고리즘. 딥뉴럴 네트워크를 움직이는 데 꼭 필요함. 요즘에도 사용됨.

 

- 1979,   학술지 IEEE Transactions on Pattern Analysis and Machine Intelligence 발간

 +) IEEE

: 미국전기학회. 상당히 좋은 저널. 논문집. (PAMI. 팜)

 

- 1980,   존 설이 중국인의 방 논문 발표, 1회 ICML 학술대회 개최, 후쿠시마가 네오코그니트론 제안

+) 네오코그니트론 (New cognization) 

: 퍼셉트론보다 조금 더 개선되어있는 시스템. 새로운 인공 신경망의 한 종류. 

 

- 1984,   영화 <터미네이터> 개봉 

+) 터미네이터의 skynet 회사

: 영화에서 위협이 되는 존재. 요즘은 Google이 skynet처럼 되고 있다는 여론이 있음.

 

- ★ 1986,  Parallel Distributed Processing 출간. 다층 퍼셉트론으로 신경망 부활, 학술지 Machine Learning 발간.

+) 다층 퍼셉트론

: 퍼셉트론을 여러 층을 사용하면 XOR을 표현할 수 있다. 퍼셉트론의 과대포장 해결)

 

- 1987,   Lisp 머신의 시장 붕괴로 2차 인공지능 겨울 시작, 1회 NIPS 학술대회 개최.

+) Lisp 머신

: 최초의 인공지능 언어 Lisp으로 만든 인공지능 머신이 제대로 작동하지 않음.

 

- 1987,   UCI 리퍼지토리가 데이터 공개 서비스 시작

 

- 1989, 학술지 Neural Computation 발간

 

- 1991,   파이썬 언어 탄생

 

- 1993,   R언어 탄생

 +) R언어

: 통계와 관련된 언어. 통계도 인공지능과 관련 있음. (인공지능은 어떻게 보면 응용통계학)

 

- 1997,   딥블루가 세계 체스 챔피언을 이김, LSTM 발표

+) 딥블루

: IBM이라는 회사가 만듦. 딥블루보다 현재의 스마트폰이 훨씬 성능이 좋음)

+) LSTM

: Long-short-term-memory. 순환 신경망(RNN)의 일종. RNN은 처음 배운 것을 잘 잊는 특성이 있음.

이를 해소하기 위해 LSTM 개발. 장기 메모리와 단기 메모리를 구분해서 따로 관리하는 Neural network.

 

- 1998,   얀 르쿤이 컨볼루션 신경망 (CNN, Convolution Neural Network)의 실용적인 학습 알고리즘을 제안, 매시가 '빅데이터'라는 용어 사용

+) 빅데이터(당시의 의미)

: 정형화 되지 않은 큰 데이터. (게시판 글, 채팅 등)

+) 정형화 된 데이터

: 표 (table) 등

 

- 1999,   엔비디아에서 GPU 공개, 소나에서 애완 로봇 AIBO 시판 시작

 

- 2000,   컴퓨터 비전 패키지 OpenCV 최초 공개, 학술지 [Journal of Machine Leaning Research] 발간

+) OpenCV

: 인텔이 주도해서 만듦. 2D 이미지의 비전 처리, 시각인공지능에서 중요한 역할을 하는 라이브러리

 

- 2001,   영화 <AI> 개봉

+) 영화 <AI>

: 감정을 지닌 인조인간이 등장하는 영화

 

- 2004,   1회 그랜드 챌린지 <고속도로 자율주행> 대회 개최

 

- ★2007,   엔비디아에서 CUDA 공개, 어번 챌린지(도심 자율주행), 사이킷 런 최초 공개

+) CUDA

: GPU 프로그래밍 라이브러리, 프래임 워크.

 +) GPU는 조그만 CPU 수천 개가 병렬처리함. 훨씬 빨라짐. 옛날에는 CPU하나가 하나의 픽셀을 담당하기 때문.

+) 사이킷 런 (Scikit-learn)

: 파이썬의 기계 학습 라이브러리

 

- 2009,   씨아노(Theano) 등장

+) 씨아노 (Theano)

: 딥러닝 패키지 라이브러리. 현재에는 공식적으로 서비스 중단됨. 파이토치와 텐서프로가 이 기능들을 많이 가져감. 

 

- 2010,   ImageNet 탄생, 1회 ILSVRC 대회 개최, 키넥트 시판 시작, 앱인벤터 언어 발표

+) ImageNet

: 대규모 자연 영상 데이터베이스.

+) ILSVRC

: 누가누가 ImageNet을 이용한 이미지 인식을 잘하나 대회

+) 키넥트 (Kinect)

: 마이크로소프트에서 만든 동작 인식 카메라.

RGB카메라 (각 픽셀의 RGB 컬러값 제공), 적외선 카메라 (Deepth 카메라) (깊이, 거리 측정)로 구성.

자동으로 사람 동작을 인식하도록 하는 소프트웨어를, 인공지능 기술과 슈퍼컴을 이용해 어마어마하게 학습시켜서 사용. 

+) 앱인벤터 언어

: MIT에서 개발한 스크레치 (블록코딩)랑 비슷한 언어. 안드로이드용 언어를 개발할 수 있음.

(음성 합성, 음성 인식, 언어 번역 컴포넌트 제공)

 

- 2011,   IBM 왓슨이 제퍼디(퀴즈쇼) 우승자 꺾음, 애플에서 Siri 서비스 시작

+) IBM 왓슨

: 인공지능 시스템. 현재 증상을 판단하는 의료용/의료보조용으로 사용.

 +) Siri

: 인공지능 비서 앱

 

- 2012,   딥러닝으로 MNIST에 대해 0.23% 오류율 달성, AlexNet 발표, 자율주행차가 시각장애인을 태우고 시범 운행 세계 최초로 성공

+) MNIST

: 필기 숫자 데이터셋/데이터베이스. 손으로 쓴 숫자를 인식하는 용도

+) AlexNet

: CNN의 일종. 제 3회 ILSVRC에서 우승함. >> CNN의 가능성을 보여줌.

>> 이미지 인식에 CNN류의 네트워크를 사용하게 되는 계기. 요즘에도 CNN 사용.

 

- 2013,   1회 ICLR 학술대회 개최

 

- 2014,   MIT에서 카페(Caffe) 공개

+) 카페 (Caffe)

: 논문을 쓰기 위한 패키지. C++을 기반으로 하는 라이브러리

 

- 2015,   텐서플로 라이브러리 공개, OpenAI 창립, 클라우스 슈밥이 4차 산업혁명을 언급

+) 텐서플로 (TensorFlow)

: 구글의 딥러닝 패키지. 파이썬으로 프로그래밍하기 시작한 계기

 

- 2016,   파이토치, 케라스 라이브러리 공개, 알파고와 이세돌 바둑 대국, 벤지오 교수의 Deep Learning 출간.

+) 파이토치 (PyTorch)

: 페이스북의 딥러닝 패키지. 파이썬 기반

+) 케라스 (Keras)

: 인터페이스가 잘 되어있음. >> 바깥은 케라스로, 내부는 TensorFlow가 돌아가는 식으로 많이들 구성함

 

- 2017,   알파고 제로 등장, 구글에서 티쳐블 머신 공개

+) 알파고 제로

: 알파고를 개선한 인공지능. 알파고를 100:0으로 이김

+) 티쳐블 머신 (Teachable machine)

: 가르칠 수 있는 머신. (뒤에 나옴)

 

- 2018,   '에드몽 벨라미'가 경매에 약 5억 원에 팔림

+) '에드몽 벨라미'

: 인공지능이 그린 초상화

 

- 2019,    알파스타가 스타크래프트에서 그랜드마스터 수준 달성

 

- 2020,   OpenAI 재단이 GPT-3 발표, 제약회사 엑센시아가 인공지능이 개발한 후보 신약물질의 1상 시험 시작.

+) GPT-3

: 3세대 언어 모델

 

 

1) 퍼셉트론과 신경망

(1) 퍼셉트론(perceptron)

: 최초의 인공 신경망. 사람의 신경세포(=뉴런)의 구조를 모방한 컴퓨팅 시스템.

(딥러닝에서 사용)

 

(2) 일반적인 신경세포와 퍼셉트론 

사진출처-지식백과(신경망)

- 뉴런의 가지돌기  = 퍼셉트론의 input         (정보를 받음)    (x1 ~ xn)

- 뉴런의 축삭         = 퍼셉트론의 이동경로   (정보 이동)

- 뉴런의 축삭말단  = 퍼셉트론의  output     (정보를 전달)     (y1)

- 뉴런의 시냅스      = 퍼셉트론의 synapse   (신경세포를 이어주고 신호를 주고받는 부위)(까먹는다 = 시냅스가 끊어졌다) 

 

+) 같은 자극을 여러 번 주면 시냅스와 축삭말단이 붙고, 점점 더 견고해짐.

+) 더하기 : 사람 뉴런에서는 세포핵에서 진행됨.

 

 

2) 인공지능 언어

- 인공지능 프로그래밍 언어

: LISP, proloag.... 등이 있었지만 대부분 실패함. 

- 1958,   인공지능 언어 Lisp 탄생.

- 1972,   인공지능 언어 Prolog 탄생.

- 1991,   파이썬 언어 탄생

- 1993,    R언어 탄생

+) R언어

: 통계와 관련된 언어. 통계도 인공지능과 관련 있음. 인공지능은 어떻게 보면 응용통계학) 

- 2010,   앱인벤터 언어

+) 앱인벤터 언어

: MIT에서 개발한 스크레치랑 비슷한 언어. 안드로이드용 언어를 개발할 수 있음.

(음성 합성, 음성 인식, 언어 번역 컴포넌트 제공)

 

3) 두번의 인공지능 겨울

- 1973,   라이트힐 보고서를 계기로 인공지능 내리막길, 1차 인공지능 겨울 시작 

+) 라이트힐 보고서

: "실제로 사용해보니 별로 쓸모가 없더라" >> 인공지능에 대한 예산 대폭 삭감

- 1987,   Lisp 머신의 시장 붕괴로 2차 인공지능 겨울 시작

+) Lisp 머신

: 최초의 인공지능 언어 Lisp으로 만든 인공지능 머신이 제대로 작동하지 않음.

 

4) 인공지능 게임 프로그램

- 1959,   체커 게임 프로그램 개발. (오셀로, 틱텍톡 등)

- 1997,   딥블루가 세계 체스 챔피언을 이김

+) 딥블루

: IBM이라는 회사가 만듦. 딥블루보다 현재의 스마트폰이 훨씬 성능이 좋음

+) LSTM

: Long-short-term-memory. 순환 신경망(RNN)의 일종. RNN은 처음 배운 것을 잘 잊는 특성이 있음.

이를 해소하기 위해 LSTM 개발. 장기 메모리와 단기 메모리를 구분해서 따로 관리하는 Neural network.

- 2011,   IBM 왓슨이 제퍼디(퀴즈쇼) 우승자 꺾음

+) IBM 왓슨

:  인공지능 시스템. 현재 증상을 판단하는 의료용/의료보조용으로 사용.

+) 시리 (Siri)

: 인공지능 비서 앱

- 2016,   알파고와 이세돌의 바둑대국

- 2019,    알파스타가 스타크래프트에서 그랜드마스터 수준 달성

 

5) 자율주행차의 발전

- 2004,   1회 그랜드 챌린지 <고속도로 자율주행> 대회 개최

- 2007,   어번 챌린지(도심 자율주행)

- 2012,   자율주행차가 시각장애인을 태우고 시범 운행 세계 최초로 성공

 


1.4 인공지능의 현재와 미래

1)  인공지능의 겨울이 또 오지는 않을까?

: 지금까지 두 번의 인공지능의 겨울이 있었다(AI 제품 실패). 그렇다면 세 번째 인공지능의 겨울이 올 가능성은 없을까?

>> 현재는 탄탄한 시장이 형성되어 있기 때문에 세 번쨰의 인공지능 겨울이 올 가능성이 적다.

>> 인공지능 기술이 발전하면서 (모든 공학 문제에서 그러듯이) 난제에 부딪히게 될 수 있다. 사람들이 인공지능을 당연시하게 바라보는 시점에서, 인공지능이 해결하지 못한 난제에 대해 고민하게 되는 순간은 올 수 있을 수도 있다. 

 

 

2) 인공지능 시장 대규모 투자

(1) 국내 : 삼성, 카카오, 네이버, KT

(2) 국외 : Google, Apple, Microsoft, Facebook, Amazon, Nvidia, Alibaba 등

(중국의 인공지능 시장이 빠르게 발전 중. 개인정보보호로 인해 데이터를 확보하는 데에 어려움이 있는데 중국은 이러한 문제가 잘 없기 때문)

(투자가 많다 = 돈 벌기 좋다)

 

 

3) 인공지능이 어떤 분야에 적용이 되는지 검색

: 위키 백과,   "Applications of artificial intelligence" 로 검색.

(인공지능이 어디에 사용되고 있는지) (음...굳이긴함..)

 

 

4) 인공지능 제품

(1) 자율주행

: CNN (이미지 처리), reinforecement train (강화학습, 스스로 학습) 사용.

 

(2) 인공지능 의료 (랜드마크 검출)

: 의사마다 다른 판단을 할 때가 있음. 의료영상(CT, MRI, X-ray 등)이 비파괴적인 방법을 사용하기 때문에 겹치는 부분도 있고, 노이즈로 인해 있는데 없어보이기도 한다. >> 의사의 경험과 노하우에 의지. 주관적. >> 의사마다 판단 달라짐.)

그래서 컴퓨터 그래픽스의 원리를 적용하고 인공지능으로 판단할 수 있도록 함. >>  사람보다 정확한 결과 도출.

 

+) 랜드마크 (landmark)

: 특징점. 사람 신체 조직에서 나타나는, 사람마다 다를 수 있지만 있을 수 밖에 없는 부분.  

 

(3) 인공지능 예술 (Generative AI)

: 세상에 존재하지 않는 사람을 그리거나, 새로운 음악을 작곡하는 등을 하는 AI.  game modeling(캐릭터, 배경)에 자주 사용됨. (말로 서술만 하면 만들어줌)

 

(4) 언어 번역 (자연어 처리, NLP, Natural Language Processing)

: 번역산업 (Localization industry)의 시장이 축소되고 있음. 

 

+) 대규모 언어 모델 (LLM, Lagrge Language Model)

: 머신 러닝, 특히 신경망을 기반. 인간의 언어나 기타 복잡한 데이터를 인식, 해석함. 충분한 데이터를 받고 학습한 컴퓨터 프로그램입니다. (Chat GPT.)  

 

(5) 자율학습하는 인공지능 게임 (Reinforcement learning)

: 예상하지 못한 상황이 오더라도 학습을 하여 스스로 해결할 수 있도록 함. 

회사의 경영 기본은  "Input(돈, 자본, 노동)을 넣었을 때 Output(수익)이 얼마나 나는가"임. 이 Input을 어떻게 조합을 해나갈 것인가를 Reinforcement learning을 통해 해결함.

 

 

5) DIY 인공지능

(1) 티처블 머신 (teachable machine)

: Google에서 만듦. 무료 베포. 여러가지 인공지능 라이브러리를 종합선물세트처럼 묶어놓고, 사용하기 편하도록 인터페이스를 만들어놓은 기술. (분류, classifiacation)

- 물체 인식 : 어떤 사물을 트레이닝 시킨 후 새로 주어진 물체가 무엇인지 판단

- 음성 인식 : 어떤 소리를 트레이닝 시킨 후 새로 주어진 소리가 무엇인지 판단 (소리를 이미지화 해서 인식)

- 동작 인식 : 어떤 동작을 트레이닝 시킨 후 새로 주어진 동작이 무엇인지 판단 (Media pipe 라이브러리를 사용)

 

+) Media pipe

: 사람 관절을 점, 뼈를 선으로 인식. 스틱맨 형식으로 나옴. (공개된 라이브러리)

 

+) 티처블 머신의 인식 프로그램 제작 과정

: 데이터 수집 (data set) >> 학습 (train) >> 새로운 데이터가 무엇인지 예측 (prediction, inference, test)

 

(2) 앱 인벤터

: MIT에서 제작. 초보자용 안드로이드 앱 제작 언어 (라이브러리). 

인공지능 관련 컴포넌트를 제공하고 있음. (음성인식 (SpeechRecognizer), 음성합성 (TextToSpeech), 언어번역 (YandexTranslate))

+) scratch와 공통점 : 블록코딩 언어. 유사하다. 

+) Scratch와 차이점 : 앱 인벤터로 블록코딩을하면 바로 안드로이드에 적용해서 안드로이드 앱으로 사용할 수 있다. 

 

 

6) 사회적 영향과 미래 조망

(1) 자율주행차

- 사고 감소를 위해 주변 차와 통신하면서 서로 가까운 거리에서 주행 >> 도로 폭 좁아짐 >> 사람 운전 금지

- 신호등이 없는 사거리

- 사람 인식 능력을 넘는 주행 >> 사람보다 훨씬 빠르게 주행하게 됨 >> 사람 운전 금지

 

(2) 직업군의 변화

- 대한민국은 로봇 밀도에서 세계 1, 2위를 하고 있음. 

- Frey의 연구 : 702개의 직업에 대해 사라질 위기를 확률로 계산. 

- '인공지능을 쓰는 사람이 인공지능을 쓰지 않는 사람을 몰아낸다.'

- 개발자는?  >> 개발자 수요가 줄어든다 vs 지금보다 더 복잡한 소프트웨어 개발. 오히려 수요가 늘 것이다.

 


1.5 인공지능 만들기

1)  지배적인 공학적 관점

 (1) 인공지능 접근 방법

- 생물학적(이과)

: 통계, 생물학, 뇌과학 등. 인간의 지능을 연구한 후, 그 원리를 모방하여 기계를 제작

(예시 : CNN은 인간의 시각피질을 모사하였다는 주장이 있음.)

 

- 컴퓨터공학적(공과)

:  쓸만한 지능 기계를 만들 수 있다면, 굳이 인간 지능 원리를 따를 필요 없음. 

(예시 : 비행기 날개는 새의 날개를 모방한 것이 아니다.) (현재는 공학적 접근방법이 지배적임. 트랜드)

 

+) AGI (Artificial General Intelligent)

: 강한 인공지능 (여러 분야 적용 가능). (Chat GPT 등) 

 

 

2) 규칙 기반 방법론 vs 기계학습 방법론

(1) 규칙 기반 방법론 (Rule-based method)

: 사람이 사용하는 규칙을 수집하여 프로그래밍 (1960년대에 등장) (if...elif...elif...)

 

+) 예시

: 필기 숫자 인식 프로그램 (여러 사람들이 쓴 숫자들을 가지고 규칙 수집), 의료진단.

 

+) 문제점

: 수집한 규칙에서 벗어난 샘플 (예외)이 꾸준히 발생한다는 한계가 있다.  >> 기계학습 방법론

(작동 잘 안함  >>  인공지능 겨울 발생  >>  1990년부터 기계학습이 주도권을 잡음)

 

(2) 기계학습 방법론 (Machine Learning Method)

: 충분한 데이터 수집 후 기계학습 (ML) 모델을 학습하는 방법 (데이터-주도 패러다임)

 

+) 예시

: MNIST 데이터셋, SVM, Random Forest, 다층perceptron 등.

 

+) AI vs ML vs DL

: AI 가장 큰 범위, ML이 그다음, DL이 그다음

출처 - neurosnap.ai (https://neurosnap.ai/)

(ML과 DL사이 : 통계학, 수학적인 부분)

 

 

3) 파이썬 프로그래밍

(1) 파이썬 > C언어

- 기계학습은 vector와 matrix 처리 자주 함 >> 파이썬은 다차원 데이터들(vector, matrix, tensor)을 편리하게 코딩 가능.

- 파이썬은 인터페이스 언어임.  (핵심 라이브러리를 호출해서 사용)

- 파이썬은 glue language. 바이너리(binary, 두 가지 이상의 언어로 작성된) 레벨의 라이브러리를 가져와서 실행시킬 수 있음. (C/C++, Fortran, Rust 등의 언어의 입출력 연결 시 python 사용)

 

+) ★ Rust

: C/C++ 대체 언어. 최근 C/C++을 보안상으로 사용하지 말라함. 

(C/C++은 직접적으로 주소를 통해 메모리 내용에 엑세스(읽기,쓰기)할 수 있음. 변조, 수집 가능)  

 

+) C언어 단점

: 메모리 할당, 디버깅에 많은 시간 할애

 

+) 핵심 라이브러리

: 효율성을 위해 C로 코딩되어 있음.


1.6 학습 목표와 핵심 용어

1) 학습 목표  

: 딥려닝 개념 이해, Pytorch 코딩 스타일, 기초적인 통계 개념, 시각화 기법

 

 

2) 핵심 용어

- 머신러닝 (ML, Machine Learning)

  : 입력 데이터를 반복 학습해서, 처음 보는 변수의 값을 예측

 

- 딥러닝 (DL, Deep Learning)

  : 인공신경망(ANN)을 사용한 머신러닝 알고리즘

  (딥러닝 프로세스 : 문제 정의 >> 데이터 수집 >> 데이터 가공 >> 딥러닝 모델 설계 >> 딥러닝 모델 학습 >> 성능평가)

 

- 지도학습 (supervised learning)

  : 데이터와 정답 데이터(ground truth)를 함께 제공.  (문제집과 답지를 같이 줌)

 

- 비지도 학습 (unsupervised learning)

  : 데이터만 제공 (정답 데이터를 주지 않음) (문제집만 줌)

 

- 강화학습 (reinforcement learning)

  : 데이터 없이 인공지능이 스스로 시행착오를 통해 학습

  +) 예시 : 알파고, 게임 (사람보다 게임을 잘하는 인공지능은 강화학습을 통해 만들어짐)

 

- 생성형 AI (Generative AI)

  : 딥러닝 모델의 한 종류. 새로운 데이터를 생성하는 AI. (새로운 이미지 생성, 새로운 곡 작곡, 새로운 글 작성 등)

 

- 독립변수 

  : 입력값 (x). 다른 변수의 값을 결정하는 변수  ( y = f(x) 에서 x)

 

- 종속변수

  : 출력값 (y). 독립변수로 인해 값이 결정되는 변수. ( y = f(x) 에서 y)

 


1.7 머신러닝과 딥러닝

1)  ML과 DL의 역사

- 1950년대,   ANN등장

- 1960~1980년대,   규칙 기반 전문가 시스템 등장

                              +) 규칙 기반 전문가 시스템 (Rule-based expert system) : 실용화 된 시스템. If...else...then 구문 사용. 

- 1980~,   이후 여러 데이터를 기반으로 회귀 문제, 분류 문제로 발전

                +) 회귀 (regression) : 값을 예측.

                +) 분류 (classification) : 범주를 나눔. 

 

 

2) 선형 회귀와 분류

(1) 선형 회귀
     : 결정 경계 (decision boundary)(파란선)를 이용해서 입력값(x)에 대한 정답(y)를 예측.

      (예를 들어, 밑에 사진에서 x값이 2.7일 때, 2.7에 대한 y값을 예측하는 것)

 

(2) 분류

   : 결정 경계(decision boundary)를 기준으로, 결정 경계의 위쪽은 A, 결정 경계의 아래쪽은 B라고 분류.

사진출처 - 위키백과(선형회귀)

 

 

3) 머신러닝과 딥러닝 차이

(1) 머신러닝

: 훈련 데이터 셋(training data set)을 입력(input) >>  사람이 수동으로 특징 설계(Feature extraction) >> (이 데이터를 기반으로) 분류(classification) >> 출력(output)

+) 예시 : 강아지 사진 데이터들을 훈련시킴 >> 사람이 강아지는 이런 특징이 있다~ 하고 특징 설계 >> 강아지들 분류 >> 새로운 사진을 주고 얘는 강아지야? 물어봄 >> 강아지인지 아닌지 판단

     

(2) 딥러닝

: 훈련 데이터 셋  >> 기계가 자동으로 특징 설계 및 분류 (ANN 또는 Deep ANN을 사용) >> 출력   (효율적)

 

+) 딥러닝은 신경망(ANN)의 일종이고, 신경망(ANN)은 기계학습(ML)의 일종이고, 기계학습(ML)은 인공지능(AI)의 일종.

사진출처-위키백과(선형회귀)

 


1.8 지도 학습, 비지도 학습, 강화 학습

(1) 지도 학습 (supervised learning)

- 회귀 (regression) : 예측하는 것

- 분류 (classification) : 분류...하는 것

 

 

(2) 비지도 학습 (unsupervised learning)

- 군집 (clustering) : 데이터의 특징이 유사한 값들끼리 모아둠.

 

 

(3) 강화 학습 모형 (reinforcement learning)

출처-네이버지식백과(강화형 기계 학습)

+) 예시 : 마리오 게임을 예시로 들면, 내(agent)가 오른쪽 키를 누르면 (action) >> 마리오 캐릭터(agent)가 움직이는 게 화면에 업데이트 됨 (statement) + 아이템을 먹음 (reward)

 


1.9 파이토치를 사용하는 이유

(1)  Pytorch vs TensorFlow

- 디자인 철학

: 파이토치는 Imperative Programming , 텐서플로는 Detractive Programming.

+) Imperative Programming  : 함수형 언어가 아닌 언어. (C, C++, Java, Python 등)

+)  Detractive Programming  : 함수형 언어 (functional language). 사용하기 복잡하고 어려움.  (스칼라, 헤스칼 등) 

 

- 그래프 생성 

: 파이토치는 Define-by-Run, 텐서플로1은 Define-and-Run, 텐서플로2는  Define-by-Run 

+) 동적 계산 그래프 (Define-by-Run) : 중간에 변수의 값을 바꿀 수 있음. (유연하게 코딩 가능)

+) 정적 계산 그래프 (Define-and-Run) :중간에 변수의 값을 바꿀 수 없음. 속도는 더 빠름(얘 때문에 사용하기 어려움)

 

- 디버깅

: 파이토치는 Pythonic하며, (동적 계산 그래프로 인해) 디버깅이 상대적으로 쉬움, 텐서플로1은 복잡, 텐서플로2는 개선됨.

+) Pythonic 하다 : "Python다운 프로그래밍이 가능하다", "간결하고 쉽다"

 

- 프로덕션

: 파이토치는 TorchScript 사용, 텐서플로는 TensorFlow Serving, TensorFlow Life, TensorFlow.js 사용.

(TorchScript는 연구, TensorFlow Serving은 회사, TensorFlow Life는 모바일, TensorFlow.js는 웹에 사용하기에 적합)

 

- API & 생태계 

:  파이토치는 Python API, Pytorch Lightning 사용, 텐서플로는 많은 API를  Keras로 통합시킴. TFX등 확장 프로그램 사용.

+) API (Application Programming Interface) : 프로그램끼리 상호작용하도록 도와주는 매개체

출처 - blog.wishket.com -위시켓(API란)

+) Python API를 사용해서 Python과 사용법이 유사함. 

+) Pytorch Lightning : 상당히 좋은 알고리즘.  훨씬 간단하게 코딩 가능.

+) Keras : API 종류가 많음 >> Keras라는 프레임워크에 통합시킴 >> 계층적으로 텐서플로 내부에도 k가 작동. (복잡)

 

- 커뮤니티 (주로 사용하는 사람들)

: 파이토치는 Meta(Facebook) 제공, 학계와 연구용으로 사용, 텐서플로는 Google 제공, 주로 상용 애플리케이션으로 사용

 


1.10 파이토치 권고 코딩 스타일

- Pythonic하게, 쉽게 코딩. 

- 클래스 사용 권고

+) Module class (nn.Module) : 신경망 동작 정의. (AI는 데이터를 준비 >> 데이터를 딥러닝으로 처리에서 "데이터 처리") 

+) Dataset class : 데이터 처리. (AI는 데이터를 준비 >> 데이터를 딥러닝으로 처리에서 "데이터 준비") 

 

 

1) 신경망 정의 (Module class 사용)

출처 - ≪파이썬으로 만드는 인공지능 ≫

+) 클래스와 인스턴스

: 클래스는 붕어빵 틀, 인스턴스는 붕어빵

 

- nn.Module

: Module (기존 클래스)의 기능들이, Net (새로운 클래스) 상속됨.   (Net에서 Module Class기능 사용 가능)

 

- def

: 정의를 하겠다.

 

- __init__(self)

: 클래스를 생성할 때 실행되는 생성자 메서드 (initialize, 초기화).  객체의 성질들을 정해줌.

(self는 class member기 때문에 항상 있어야 함. )

 

 

- forward ( =앞으로 진행한다)

: 정의를 한 후에 오버라이딩을 시켜야 함 >> forward 함수 사용 

(신경망에서 데이터가 처음부터 끝까지 어떻게 동작할지 정함.)(나만의 클래스(Net)에서 나만의 동작을 정의)

 

 

2) 데이터 가져오기 + 학습

출처 - ≪파이썬으로 만드는 인공지능 ≫

+) 클래스와 인스턴스

: 클래스는 붕어빵 틀, 인스턴스는 붕어빵

 

- Dataset()

: 상속하는 경우도 있는데 지금은 상속 안하는 버젼으로 작성함

 

- def

: 정의를 하겠다.

 

- __init__(self)

: 클래스를 생성할 때 실행되는 생성자 메서드 (initialize, 초기화).  객체의 성질들을 정해줌.

(self는 class member기 때문에 항상 있어야 함. )

 

-  __len__(self)

: 길이 반환. 원소의 대수를 셀 때 접근되는 메서드.

 

- return len(data)

: (data가 list형식으로 작성되어 있다고 가정) 데이터의 개수 반환.

 

- __getitem__(self,i)

: 인덱스에 접근할 때 호출되는 메서드. 

클래스의 인스턴스 자체도 슬라이싱 가능. (클래스 내부에서 슬라이싱 기능 사용 가능하게 함)

(객체에 [ ] 연산자 사용 (리스트가 되)  >>  내부적으로  __getitem__ 메소드가 자동으로 실행)

 

+) 예시

: a=[1,2,3,4] 일 때, a[i]로 들어가고, 이에 대한 값이 반환되게 함.

( a[0] = 1, a[1] = 2, a[2] = 3, a[3] = 4)    (i자리는 인덱스 자리)

 

+) 슬라이싱(slicing)

: a=[1,2,3,4] 일 때, a[:], a[1:3], a[0:2:3] 같은 것.

 

- return data[i], label[i]

: i 번쨰 data값(문제 x), i 번쨰 label값(정답y) 반환.  (튜플로 반환됨)

 

 

3) 구성

: 모듈 클래스 (동작, 구조) + 데이터셋(data).   (딥러닝 학습 수행 코드)

 

+) 예시

출처 - ≪파이썬으로 만드는 인공지능 ≫

★이거 전체가 학습(training)과정

- 목표 : 가중치 결정

- 가중치 : 뇌세포들 사이에 연결 상태를 나타내는 것 (얼마나 강하게/약하게 연결되어있는지)

 

- for data, label in DataLoader()

: 문제(data)와 정답(label)이 있는 지도학습(supervised learning)

 

- loss (오차)  ( = (y hat-y)^2 = |y hat - y|)

: 예측값(y hat, prediction)과 정답(y, label)이 얼마나 차이가 나는가

(보통 y hat과 y는  벡터나 텐서로 나타남) 

 

- weight (가중치)

: 오차역전파(back propagation)를 이용해서 신경망 가중치를 수정한다. 

 

- optimizer (최적화)

: 경사하강법을 푸는 방법. 


+)참고

1) 클래스의 특별한 메서드  

(1) __del__

: 소멸자 (Destructor). 인스턴스 삭제할 떄 자동 호출. (생성자__init__와 반대)

 

(2) __repr__

: 인스턴스를 print()문으로 출력할 때 실행.

 

(3) __add__

: 인스턴스끼리 더할 때 실행.

 

(4) 비교 메서드

: 인스턴스 사이의 비교 연산자 (<, <=, >, >=, ==, != 등) 사용할 때 호출.

( __lt__() ,  __le()__ ,  __gt__() ,  __ge__() ,  __eq__() ,  __ne__() )

 

 

2) 예시

출처 -

>> self.numbers

: [0, 1, ..., 9]

 

>> T = Test()

: Test 함수 실행

(T는 instance, Test는 class)

 

>> len(T)

: __len__메서드 실행    

10

(계속 instance T를 사용하고 있음)

 

>>T[3]

: __getitem__메서드 실행

3

반응형