일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JanusGateway
- 자원부족
- tolerated
- Value too long for column
- mp4fpsmod
- addhooks
- RouteLocator
- table not found
- JanusWebRTCGateway
- 겨울 부산
- Spring Batch
- 달인막창
- python
- kotlin
- vfr video
- JanusWebRTC
- JanusWebRTCServer
- pytest
- PytestPluginManager
- VARCHAR (1)
- terminal
- 깡돼후
- 코루틴 빌더
- PersistenceContext
- taint
- gitflow-shFlags
- 개성국밥
- ErrorResponse
- preemption #
- 코루틴 컨텍스트
너와 나의 스토리
[Data Mining] AI / Machine Learning / Deep Learning 본문
[Data Mining] AI / Machine Learning / Deep Learning
노는게제일좋아! 2020. 4. 21. 16:19AI(Aritificial Intelligence)란?
- Strong AI: 인간과 똑같이 생각하는 기계
- 아직까지는 불가능
- 자유 의지가 있어야 함
- Weak AI
- 컴퓨터 기반의 인공지능은 인간의 지능을 부분적으로 흉내 내고 있을 뿐
인간 생각의 요소들
- 기억, 계산, 추론, Knowlege Representation(Expert system), 인지(Pattern recognition), 상식, 계획
- 기억, 계산, 추론, 계획은 컴퓨터가 잘함
- 인지, 상식은 컴퓨터가 잘 못 함 -> 점점 잘해지고 있음
- 인지 -> 개인가 고양이인가 => Deep learning으로 구별
CLASSICAL AI
- Decision Tree - 고전적인 AI
- Basic algorithm (그리디 알고리즘)
- top-down recursive divide-and-conquer manner
- 모든 트레이닝 데이터는 루트에서 시작
- attribute들은 categorical (연속적인 값이면 이산화)
- attribute 선택을 기반으로 재귀적으로 파티션
- heuristic 또는 통계적 특정을 기반으로 attibute 선택
- 파티션 종료 조건
- 주어진 노드의 모든 샘플이 같은 클래스에 속할 때
- 더 이상 파티션할 attribute가 남지 않을 때 - 다수결 투표로 leaf classifying
- 더 이상 샘플이 없을 때
- 이전 게시물들 참고
CLASSICAL AI (RULE-BASED) VS CONNECTIONISM (ANN)
Decision tree나 Bayesian과 같은 classical AI 기법들을 rule-based system이라 한다. 이러한 rule-based system의 한계를 극복하기 위한 일환으로 Aritificial Neural Networks라고 하는 connectionism이 출현하였다.
Rule-based system
- 하향식 접근 방식
- 논리적인 규칙에 기반하여 AI의 요소들을 구현
- 구현된 rule들을 visible하며 일부 자동으로 변경 가능하지만 주로 외부 입력에 의해서 생성, 변경된다.
- rule의 생성은 주어진 샘플의 통계 법칙을 따른다
- ex) Decision tree / Bayesian network / Association rule / Expert system
Connectionism
- 상향식 접근방법
- 인간의 뇌 구조 중 대뇌 피질의 뉴런들의 계층구조를 모방한 시스템으로 외부의 경험적 Big Data(vision, sound, internet contents ...)로부터 학습을 통해 rule을 만들며 그 rule들은 invisible이고, 자동으로 수정 가능한 자율학습 시스템이다.
- Aritificial Neural Networks (ANN)
Machine Learning이란?
기존의 명시적인 프로그래밍으로 해결할 수 없는 문제들을 해결하기 위해 machine learning, 즉 기계가 스스로 어떤 패턴을 학습하도록 하는 접근법이 등장. 요컨대 머신러닝이란, 프로그래머가 직접 수많은 규칙을 미리 정해주는 대신 프로그램 자체가 데이터를 통해 스스로 학습하도록 하는 방법.
Supervised Learning
- 특정 input에 대해 정답(label)이 있는 데이터 셋이 주어지는 경우
- Regression
- Regression의 output은 연속 값을 갖는다. 즉 주어진 input 변수를 output 변수에 대응시키는 어떤 연속함수를 찾는 과정
Unsepervised Learning
- 정답(label)이 없는 데이터 셋으로 학습
- 예측 결과에 대한 피드백이 없음. 잘못된 예측을 교정해줄 선생님이 없는 것
- Clustering
- 비슷한 것끼리 묶음
Deep Learning이란?
- Neural Network의 여러 학습 알고리즘들을 일컫는 말
- 많은 layer로 학습 가능 => deep learning
- 기존에는
- Backpropagation은 2 layer인 경우에만 작동
- layer이 3 이상이 되면 backpropagation이 잘 안되고 어차피 성능도 2 layer랑 비슷
- 그래서 2 layer로만 learning 했었음
- Backpropagation 설명
- 최근 AI 혁명의 긴 역사 끝에 나온 주요 기술
- 특히 직관적인 문제들에 대해 매우 효과적
- 사람들이 쉽게 수행하지만 어떻게 수행하는지 설명 못하는 일들
- 단어나 이미지 인식
Deep learning 특징
- layer가 많고, 연결성이 많다
- 그렇기 때문에 input은 big data이어야 한다.
- 간단한 머신러닝 알고리즘들의 경우
- 주어진 데이터의 representation에 의존
- 원시 데이터(raw data) 그 자체로는 잘 안 씀
- 데이터들을 features라는 잘 정리된 형태로 줌
- 즉, 얼굴 인식 시킬 때, 눈/코/입/귀 이렇게 다 지정해줘서 줌 (딥러닝은 그냥 줘도 알아서 판단)
- Deep learning의 경우
- Representation으로 부터 예측 같은 output뿐 아니라 representation 자체도 학습
- Representation: 데이터에서 feature 추출하는 것
- 예:
- Representation으로 부터 예측 같은 output뿐 아니라 representation 자체도 학습
Neural Network의 구조
- Feedforward neural networks (a.k.a. multilayer perceptron)
- 네트워크에 루프가 없음
- 정보가 항상 앞으로만 정달됨
- Recurrent neural network (RNN)
- Feedback loops 가능
Feedforward neural network로 XOR 문제 해결하기
- 두 개의 units을 포함하는 1 hidden layer를 가진 Feedforward NN
Activation function
- 노드로부터 리턴되는 값을 정의
- Perceptron은 실제로 binary step function을 사용
- binary step function은 많은 경우에서 best가 아님
- 가중치나 편향이 조금만 변해도 결과적으로 완전히 반대가 되는 결과를 낼 수 있음
Sigmoid unit
- binary step과 비슷
- binary step보다 flexible해서 binary classification 문제에서 적합함
- 가중치나 편향의 작은 변화는 결과에서 조금의 변화밖에 주지 않음
- 때로는 gradient descent algorithm에서 그다지 효과가 없기도 하다.
- 미분 가능해서 gradient descent algorithm에서 사용 가능
Learning with training data in neural network
- NN에서 'learning'의 의미?
- 트레이닝 데이터가 주어지고, cost function을 최소화하는 최적의 가중치와 편향을 찾는 것
- Cost function
- 예측 값과 원하는 결과가 얼마나 다른가 보여줌
- e.g. 간단한 quadratic function
- x: input
- y(x): x에 대한 원하는 결과
Gradient Descent Algorithm
Stochastic Gradient Destcent
- 트레이닝 데이터의를 랜덤하게 샘플링해서 gradient를 계산
- 참고 - https://hororolol.tistory.com/161
Gradient Descent Algorithm의 문제점
- Vanishing gradient problem
- 어떤 layer에서 gradient가 0의 가까운 값을 가지면 업데이트가 거의 일어나지 않게 된다.
- -> 훈련이 안됨 (cost가 0에 수렴되지 않음)
- Local minima
- 학습이 cost function의 부분적인 최소값에 갇혀서 더 이상 진행하지 못하는 현상
- 그래프가 울퉁불퉁하게 생겼을 때, global minimum을 찾지 못하고 local minimum에 갇히는 현상
- OSscillation
- cost function의 최소점에서 좌우로 진동하면서 최소점에 도달하지 못하는 현상
- Plateau(평원)
- 최소점이 아니면서 0에 가까운 gradient가 계속 이어지면서 고착되는 현상
- 그래프에 평평한 부분이 길게 있을 때, 진행을 못 함
-> deep network로 위 문제들을 해결할 수 있게 됨