해당 시리즈는 LG에서 지원하는 LG Aimers의 교육 내용을 정리한 것으로, 모든 출처는 https://www.lgaimers.ai/ 입니다.
어제부로, supervised learning
내용을 다 듣고, 오늘부터 unsupervised learning
에 대해 알아본다.
unsupervised learning
은 supervised learning
과 달리 인간의 개입이 최소화된 인공지능 학습 방법으로 알고있었지만, 사실 인간이 개입되는 부분도 많다는 것을 알 수 있었다.
이런 unsupervised learning
의 가장 대표적인 예는, 사람이 아기일 때로 아기는 걸어다니는 법, 목을 가누는 법, 무언가를 잡는 법 등 누군가 가르쳐주지 않아도, 시간이 지남에 따라 자신의 몸을 제어할 수 있으며 점점 그 정도가 증가한다.
k-means clustering
은 대표적인 unsupervised learning
으로, 많은 데이터들을 k
개의 클러스터로 나누어서 비교적 비슷한 특징을 갖는 각각의 클러스터로 데이터 집합을 구성하는 것을 목표로 한다.
아래는 k
가 3일 때의 3-means clustering
과정을 보인다. 해당 데이들은 label
이 존재하지 않는다.
step 1
: 3개의 클러스터를 설정하여 각각의 점이 3개의 다른 특징을 가지는 클러스터 중 하나에 포함한다.
Iteration 1, step 2a
: 각각 클러스터에 할당된 점들을 모아서 Centroid (평균)
에 해당하는 점의 위치를 찾는다. 이때, 데이터들이 무작위로 할당되어 있어 3개의 Centroid
가 상당히 모여있다.
Iteration 1, step 2b
: 새로 계산된 3개의 Centroid
를 기준으로 각각의 점들을 가장 가까운 Centroid
에 할당한다.
Iteration 2, step 2a
: 새로 할당된 점들을 이용해 Centroid
를 계산한다.
위와 같은 방식으로 clustering
을 완료한 경우, 숫자적으로 의미가 있는지 꼭 검증이 필요하다.
다른 여타 unsupervised learning
으로는 아래 3개의 예가 있다.
이는 가까운 것들끼리 묶는 과정의 반복을 통해 계층 구조를 형성한다.
빨갛게 밑에 보이는 선들이 각각의 샘플 값들이고, 샘플의 값은 이 경우에 1-dimentional 한 스칼라 값이다. 이런 스칼라 값이 있을 때, 어느 스칼라 값 근처에서 점들이 발생하는가에 대한 확률을 계산하는 문제다.
dimention
을 줄이기 위한 기법으로, Eigenvalue Decomposition
과 동일한 방식이다.
Low Dimentional Data
: 작은 dimentional data
Simple Concepts
: 개념이 간단Reliable
: 결과에 대한 검증이 필요Internal cluster validation
: 하나의 클러스터가 있으면, 클러스터 안에 모여있는 점들간의 평균거리와 서로 다른 클러스터에 모여 있는 점들간의 평균거리 등을 비교하여 검증
External cluster validation
: 원래 데이터가 label
이 있는 데이터이고, 각 데이터가 label
이 없다고 가정한 뒤, k-means clustering
을 수행하여 나온 결과가 label
하고 일치하면 의미 있는 결과이고 일치하지 않으면 의미없는 결과다.
클러스터링 후 가장 중요한 스텝은 클러스터링 된 결과가 말이 되는지 꼭 검증과정을 수행하는 것이다.
위의 perceptron
과 같이 단순한 알고리즘을 쓸 때는, 좋은 성능을 바로 내기 어렵기 때문에 Raw data (original input data)
를 인간이 가공해서 Hand cord weight
을 통과시키거나, 프로그램을 만들어 통과시키는 과정을 통해 인간이 수작업으로 중요한 정보들을 잘 정리해주고 잘 정리된 정보를 중간 layer
에 넣어주면, 최종적으로 좋은 결과를 도출해낼 수 있다.
일반적으로 우리가 원하는 것은, X
라는 데이터가 있을 때 f
라는 함수를 잘 찾아서 X
를 함수에 넣었을 때 나오는 결과 Y^
을 우리가 원하는 값이 나오게 하는 것이다.
하지만, 이러한 문제를 풀 때 우리가 다루지 않는 부분이 존재한다. 아래 그림 속 빨간 네모 박스 부분인데, 우리는 데이터 X
가 어떠한 과정으로 생성되었는지 알 수도 없고, 알려고 하지도 않는다. 이는 수많은 random variable
이 복잡한 규칙을 통해 거의 모든 상황에서 non-linear
한 관계로 섞여 X
라는 데이터가 된다.
우리는 Y
에서 X
로 가는 과정은 정말 알 수 없지만, 푸는 문제가 어떤 domain
에 있는 데이터인지에 따라 어느정도의 힌트는 얻을 수 있다.
그로인해, 모델을 도와주기 위해 X
를 입력으로 받아 잘 정리된 정보 g(X)
를 제공한다면 쉽게 문제를 풀 수 있을 것이고, 인간은 이를 최대한 잘 만들려고 노력할 것이다. 즉, g(X)
를 f(X)
가 잘 쓸 수 있게 만들었다면 해당 모델은 우리가 원하는 결과 값을 잘 낼 것이다.
feature engineering
의 속성은 다음과 같다.
By human
Domain knowledge & creativity
Brainstorming
전통적 접근법에 해당하는 내용들이다. g()
를 찾는 과정을 feature engineering
으로 통칭하며, 통상적으로는 함수 f()
가 스스로 해내지 못하기 때문에, 인간이 모델의 결과값을 위해 g()
를 찾아주는 데 도움을 준다.
representation learning
의 속성은 다음과 같다.
By machine or algorithm
Deep learning knowledge & coding skill
Trial and Error
representation learning
은 아래의 질문을 항상 고민한다.
나중에 풀어야하는 문제들에 대해 이미 정보를 잘 구성해놨으니, 얼마나 쉽게 문제를 풀 수 있을까?
deep learning
의 목표는 앞서 설명한 g()
를 찾지 않는 것이다. 즉, 인간의 개입 없이 알고리즘이 스스로 중요한 정보를 잘 정리해서 y
라는 정보를 뽑아내는데 어려움이 없어 마지막에 linear layer
만 집어넣어도 linear
한 방식으로 y
를 뽑을 수 있음을 뜻한다.
이러한 특성으로, vision
이나 language
에 관계된 데이터 타입의 문제를 풀 때는 representation learning
이 더 잘 할 확률이 크다.
High Dimentional Data (Image, Language)
Difficult Concepts
: 잘 이해되지는 않지만, 좋은 성능 및 결과를 보임
Deep learning
Unsupervised Representation Learning
인간이 인공지능 모델에게 각도의 값을 전달할 때, 어떻게 전달해야 할까?
0, 2π
는 인간이 봤을 때, 동일한 값으로 보지만 인공지능은 다르다고 판단0, 1.9π
는 인간이 봤을 때, 가까운 값으로 보지만 인공지능은 멀다고 판단이를 해결하기 위해서, representation
에 변화를 주어 전달한다.
(x1, x2) = (cos(θ), sin(θ))
로 표현하여 위에서 말한 0, 2π
와 0, 1.9π
를 주면 원점으로부터 특정한 좌표값을 얻게되어 인간과 동일한 방식으로 이해한다.인간이 인공지능 모델에게 공간과 속도에 대한 정보를 전달할 때, 어떻게 전달해야 할까?
(a)
: 모델은 이해할 수 없다
(b)
: 각 segmetation
에 대한 정보만 얻을 수 있다.
(c)
: 2차원 grid
를 생성하여 인공지능 모델이 이해할 수 있는 matrix
나 2-dimentional tensor
를 생성하여 도로가 없으면 비워놓고, 값이 있는 부분에는 도로 segment
의 평균속도 값을 입력하며 교차로에는 만나는 segment
의 평균속도를 적는 식으로 수행한다. 많은 정보를 알 수 있지만 불필요한 정보도 있다.
(d)
: 그래프 형식으로 segment
를 나타내어 어느 segment
끼리 연관있는지, 평균 속력 등 필요한 정보만 얻을 수 있도록 한다.
위와 같이, 특정 형식으로 표현된 데이터에 특화된 알고리즘을 사용하면 원하는 문제에 대해 가장 좋은 성능을 기대할 수 있다.
Representation은 어떤
X
라는 개념이 있을 때 이를 수학적인 기호로 표현하는 규칙들을 의미한다.
본 그림은 unsupervised learning
의 예를 나타내는 그림이다. 왼쪽 위의 그림에서 사람은 불에 비친 물병의 그림자만을 볼 수 있다. True Object
는 무엇인지 볼 수 없고, 그에 해당하는 Object Shadows
를 보고 무엇일지 생각한다.
supervised learning
에서는 Task
가 명확하기 때문에, Class
에 대한 정보를 원하고, vase
라고 하는 class
정보나 도움이 되는 정보를 정리해내는 것이 목표다.
하지만 unsupervised learning
은 어떤 Task
를 풀고 싶은 것인지 정해놓지 않았기 때문에, 정보를 잘 정리하여 어디에 쓸지에 대해 지정해놓지 않아 supervised learning
에 비해 막연하다.
우리가 실질적으로 얻고자 하는 것은, 이미지가 입력으로 들어왔을 때 인공지능이 알아서 이미지를 분석하고 분해하여 어떤 class
인지, 어떤 color
인지, 어떤 shape
인지 등 모든 정보를 알아내고, 해당 정보를 잘 정리하는 것을 바라지만 현실적으로 불가능하다.
그렇기 때문에, 인간이 어느정도 도움을 줘야 가능한 부분이다.
데이터의 입력단에서 pre-processing
을 통해 모델을 도와준다.
Heavy Pre-Processing
: 데이터가 복잡하거나 모델이 처리하지 못하는 경우 인간이 이런저런 feature
를 뽑아 새로운 입력 값을 넣어줌으로써 도움을 줌 = human feature engineering
Minimum Pre-Processing
: const normalization of imagesNo Pre-Processing
: text of a wiki page : 텍스트의 경우 너무 복잡하여 인간이 도와줄 수 없다.데이터의 출력단에서, Relu
처럼 단순한 Activation Function
을 쓰고, 마지막 Classification
하는 경우는 Cross-Entrophy Loss
를 사용하면 설명할 수 있다는 점으로 학습이 잘 됨을 알았다.
Good Representation 이라고 하는 것은, 무엇인지 딱 정의하기 어렵지만, Useful 하고 Irrelevant 해야한다.