자율주행과 AI & Machine Learning
1. 자율주행과 인공지능
자율주행을 위해선 인지, 판단, 제어 3가지의 기능이 안전하게 이루어져야 한다. 그러나 컴퓨터가 마치 사람처럼 주행 환경을 정확히 인지하고, 위험을 판단해 적절한 제어를 하는 것은 어렵다. 따라서, 인공지능 기술을 이용하여 이를 보완한다면 더욱 안전한 자율주행이 가능할 것이다.
1.1. what is AI?
Artificial Intelligence, 인간의 지능과 유사한 특성을 가진 복잡한 컴퓨터를 말한다. 1956년 미국 다트머스 대학의 존 맥카시(John MaCathy)교수가 인공지능을 주제로 첫 학술대회를 개최하며 이곳에서 인공지능이란 용어를 처음 사용했다. 기계가 인간이 풀지 못하는 어렵고 복잡한 문제들을 해결했지만 반대로, 인간에겐 쉬운 문제지만 기계는 해결하지 못하는 문제도 있다. 예를 들어, 감정 판단, 음성 인식, 번역등은 인간에게 직관적이므로 쉽게 해결할 수 있지만 기계로 해결하기는 매우 어렵다.
인간처럼 의식, 감정, 정신을 가진 인공지능을 강한 인공지능이라 하는데 이는 우리가 영화에서나 볼 수 있고 주로 다루게 될 것은 약한 인공지능이다. 이는 특정 문제를 해결하기 위해 개발된 것으로 이성적 업무를 연구하고 완수하기 위한 인공지능이다. 자율주행차량에 사용되는 인공지능이나 알파고 같은 것들이 그 예시임.
2. Machine Learning
Tom Michell “ 기계가 특정 과제에 대한 다양한 경험을 통해 성능(Perfomance)을 개선하는 알고리즘을 연구하는 것.”
Authur Samuel “ 명백하게 프로그래밍하지 않고, 컴퓨터에게 학습할 수 있는 능력을 주는 연구 분야”
컴퓨터에 지식을 추가시키고 이 추가된 지식에 기반해 컴퓨터가 판단을 내리도록 하는 전통적인 방식을 지식기반방식(Knowledge-based system) 이라 한다. 그러나 컴퓨터에게 지식을 무한히 추가하는 것은 불가능하므로 기계학습 으로의 대전환이 일어났다.
기계학습은 마치 어린아이가 시행착오를 겪으며 성장하는 것처럼 기계가 학습을 통해 향상되는 것을 말한다. 기계를 학습 시키기 위해서는 훈련데이터(Training Data) 와 시험데이터(Test Data) 가 필요하다. Training data로 기계를 학습시킨 다음 학습이 잘 되었는지를 Test data로 평가한다. Test data는 미리 알 수가 없으므로 Training data를 단순히 암기하는 식의 학습이 아니라 Training data의 일반적인 패턴을 학습해야 한다. 그래야 새로 주어진 Test data에서도 고성능을 발휘할 수 있을 것이다. 이처럼 일반적인 패턴을 학습해 높은 성능을 발휘하는 능력을 일반화 능력(Generalization) 이라 한다.
그런데, 기계가 학습을 과하게 철저히 하게 되면 Training data에는 아주 잘 적용되지만 외려 새로운 Test data에는 잘 적용되지 않는 현상이 발생할 수 있다. 이를 Over-fitting이라 한다.
2.1. 지도학습(Supervised Learning)
특징 벡터(데이터의 특징을 나타낸 벡터) X와 목표값(특징벡터에 대한 정답,Label) Y가 모두 주어진 상황에서의 기계학습을 말한다. 예를 들어, 어린아이에게 사과 사진을 보여주며 이것이 사과라는 것을 알려주는 것과 같다. 지도학습은 분류문제와 회귀문제로 구분할 수 있다.
2.1.A. 분류문제
정답이 이산값인 경우로써 ‘사람이다. 나무다. 자동차다’ 처럼 딱딱 떨어지는 답(Label)을 갖는다. 이때, 정답들이 ‘사람, 나무, 자동차,…’ 처럼 카테고리화 될 수 있으므로 목표값 Y는 Class형태를 보인다.
2.1.B. 회귀문제
정답이 연속적인 값인 경우다. 예를들어, 자율주행자동차가 위치를 추정하고자 한다면 위치에 대한 목표값이 좌표로 주어질 것이다.
2.2. 비지도학습(Unsupervised Learning)
지도학습이 X와 Y가 모두 주어지는 학습인데 반해, 비지도학습은 특징벡터 X는 주어지지만 목표값 Y는 주어지지 않는 상황에서의 학습이다. 여러 사진을 보여주면서 ‘A사진과 B사진이 비슷하니 같은 물체일 것이다.’ 또는 ‘A사진과 B사진은 빨간색이 많이 보인 다.’등으로 정답은 모른 상태로 특징만을 학습한다. 비지도학습으로 수행할 수 있는 문제는, 군집화(Clustering), 밀도추정, 특징공간변환(차원축소) 등이 있다.
2.2.A. 군집화
서로 비슷한 것끼리 묶는 과정을 말한다. 사진을 관리하는 시스템(비슷한 것끼리 묶어 놓기)이나 영상분할(Segmentation)등에 사용된다. 군집화의 종류에는 Hard clustering(일반군집화)과 Fuzzy clustering가 있다. 전자는, 데이터가 하나의 군집에만 소속되는 것이고, 후자는 데이터가 여러 군집에 소속될 수 있다.
2.2.B. 밀도추정(Density estimation)
데이터와 변수의 관계를 파악하는 방법이다. 데이터(EX:모의고사성적)로 변수(EX:수능성적)가 가질 수 있는 모든 값의 밀도(확률)를 추정하는 것.
2.2.C. 차원축소(Dimension reduction)
은 고차원의 데이터 정보를 손실을 최소화하면서 저차원으로 변환하는 것. 고차원 데이터는 관측 Step이 기하급수적으로 증가하거나 그것을 표현하기 위한 데이터 양이 기하급수적으로 증가하면서 메모리 문제가 발생할 수 있다. 이를 차원의 저주라 하는데, 이런 문제를 해결하기 위해 데이터의 의미를 제대로 표현하는 특징만을 추려내는 차원축소가 필요하다.
2.3. 강화학습(Reinforcement Learning)
목표값 Y가 주어지지만 직접적으로 주어지진 않아 지도학습과는 다르다. 지도학습이 배움을 통해 실력을 키우는 것이라면 강화학습은 일단 해보면서 실력을 키워가는 것이다. 선택의 결과가 자신에게 유리하면 상을 받고 아니라면 벌을 받는다. 게임과 비교하면, 게임의 승패에 따라 보상 또는 벌칙을 부여하여 보상의 합이 최대화 되는 방향으로 학습하는 것이다. 즉, 어떤 환경 안에 정의된 agent가 현재의 상태를 인식하여 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택한다.
2.4. 준지도학습(Semi-Supervised Learning)
지도학습과 비지도학습의 중간으로, 일부는 X와 Y를 가지지만 나머지는 X만 가진 상황에서의 학습. 이 둘을 통합하여 활용한다. 정답을 갖고 있는 데이터와 정답이 없는 데이터를 통합해서 활용한다.
3. 기계학습 일반
기계학습은 예측문제를 해결하며 예측에는 회귀와 분류가 있다. 어떤 실수값을 예측하는 것이 회귀(Regression) 이고, 어떤 부류인지 예측하는 것이 분류(Classification) 이다.
3.1. 지도학습 - 예측회귀문제
특징과 목표값을 이용해 추세를 예측하는 문제이다. 위의 그림에 있는 4개의 점은 training set의 요소들로 사례 또는 Sample이라 하는데, 이를 이용해 추세를 예측한다. (임의의 시간이 주어졌을 때 이동체의 위치같은거 예측)
이 예시 그림은 눈대중으로 보면 직선을 이루므로 선형모델을 선택한다.(선형회귀문제)
이 선형모델로 학습을 마치면 매개변수 (w,b)를 갖게된다. 이 매개변수가 최적이라야 일반화능력이 좋다. 즉, 매개변수 (w,b)의 전체 집합을 Θ라고 한다면 좋은 Θ를 어떻게 학습할 것인지(일반화 능력을 어떻게 올릴지)가 관건
3.2. 목적함수(=비용함수=손실함수)
일단 training을 잘 하는게 기본이다. training을 잘하고 있는지를 판단하는 척도가 되는 게 목적함수(Objective function)=비용함수(Cost function)=손실함수(Loss function) 이다. 이 함수들은 Θ에 대한 예측치가 정답과 얼마나 차이가 있는지 나타내는 함수로 대표적으로 평균제곱오차함수(MSE, Mean Squared Error)가 있다.
n개의 data point에 대해서 예측치와 정답 사이의 차이를 제곱한 다음 평균낸 것
즉, Θ를 변수로 한 목적함수 J를 최소화 해주는 argument Θ를 선택하는 것이 관건이다. 이러한 Θ를 찾기 위해 경사하강법을 사용한다. 경사하강법이란, 함수를 편미분하고 값의 반대 방향으로 이동해 최소값을 찾는 방법이다.
두 개의 변수 x0, x1에 대한 함수 f를 미분하면 다음과 같이 표현된다.
즉, 화살표의 반대 방향으로 움직이면 최소값에 도달하게 된다. 이를 식으로 나타내면 다음과 같다.
Parameter가 이런식으로 업데이트 되어간다. 여기서η는 학습률로, η만큼씩 이동하는 것을 의미한다.
NOTE📝
Learning rate가 크면 더 빠르게 최소값에 다다를텐데 이때 어떤 문제가 발생할지?
3.3. 선형모델의 한계와 일반화능력 향상 방법
실제 세계는 선형이 아니며 Noise가 섞이므로 비선형 모델이 필요하다.(비선형회귀문제)
위의 그림에서 데이터 포인트를 가장 잘 설명하는 모델은 3차 혹은 4차이다. 1차나 2차는 너무 적게 fitting되어, 모델의 경향성을 제대로 표현할 수 없는 Under-fitting이 발생한다. 그렇다고 너무 과하게 fitting하면 12차 모델처럼 Over-fitting이 발생하므로 Training data에 대한 오차는 감소할지라도 새로운 데이터 예측 시에는 오차가 증가하게 된다.
3.3.B. Bias와 Variance
Over-fitting으로 인해 일반화 능력이 떨어진 경우 이를 향상시키기 위해선 Bias와 분산을 적절히 선택해야한다. Bias(편향) 는 예측치가 이루는 오차의 평균을 의미한다. 즉, Bias가 적다는 것은 오차가 적다는 것을 의미하므로 적을수록 정답에 가깝다. Variance(분산) 은 퍼져있는 정도를 이야기한다. 분산이 크다는 것은, Training dataset가 바뀔 때마다 모양이 크게 요동치는 것을 의미한다. 즉, Bias와 Variance가 작을수록 정답에 가깝다. 그런데, 이 둘은 trade-off 관계에 있으므로 하나가 작아지면 하나가 커지게 된다. 따라서, bias의 희생을 최소로 유지하면서 variance을 최대로 낮추는 전략을 선택해야 한다. 그렇게해야 일반화 능력이 향상된다.
3.3.B. Validation set(검증집합)
Training set로 모델을 학습시킨 후 Validation set로 학습된 모델의 성능을 측정한다. 그리고나서 가장 높은 성능을 보인 모델을 선택한 후, 선택된 모델의 성능을 Test set로 측정한다. 그런데 이 과정에서 Validation set를 따로 마련하기가 쉽지 않다. 따라서 Training set의 일부를 Validation set로 활용하여 학습과 평가 과정을 여러번 반복한 후 그 평균을 성능으로 취하는 교차검증(Cross Validation) 을 활용한다.
3.3.C. Data
예를들어, 12차 모델을 가지고 parameter를 tuning하면 이상한 경향을 배우게 될 수 있다. 이런 것이 바로 전형적인 over-fitting이다. 이때, (c)처럼 data 자체가 많으면 실제 system이 가지고 있는 특성을 더 많이 보여줄 수 있으므로 정확한 모델을 학습할 수 있다.
그런데, 데이터를 수집하는 건 비용이 들고 불가능한 경우도 있다. 따라서 데이터 확대(Data Augmentation) 를 활용한다. Training set의 sample들을 조금씩 변환(Rotation, Warping) 시키면서 우리가 관찰할 수 있을만한 데이터를 인위적으로 생성하는 방법이다.
예를 들어, 이렇게 변형된 손글씨들(인위적으로 만든 데이터, 확대된 데이터)을 학습하면 다양한 손글씨를 잘 일반화하게 된다.
3.3.D. 규제(Regularization)
어떤 모델의 weight가 너무 크지 않도록 규제하는 것이다. 예를들어 12차 모델의 경우 data point가 많이 없을 때 굉장히 큰 weight를 가지는데 weight가 크다는 것은 over-fitting을 유발하므로 목적함수를 조정해 이를 규제해야 일반화 능력이 향상된다.