개요
백설공주 거울과 인공지능 이야기 - 오제키 마사유키
이 글은 위의 책을 보고 필요한 부분을 발췌하여 가공한 글입니다.
Machine Learning에 대한 책을 찾아보던 중 위의 책이 머신러닝의 기초 용어들에 대해 잘 정리해 둔 것 같아 정리해 둔다.
책의 화자는 백설공주의 계모인 왕비가 가진 마법 거울이다. 계모는 자신의 미모가 어떤 수치를 가지고 있는지를 알아내고자 마법 거울을 학습시킨다.
이 글은 위의 책을 보고 필요한 부분을 발췌하여 가공한 글입니다.
Machine Learning에 대한 책을 찾아보던 중 위의 책이 머신러닝의 기초 용어들에 대해 잘 정리해 둔 것 같아 정리해 둔다.
책의 화자는 백설공주의 계모인 왕비가 가진 마법 거울이다. 계모는 자신의 미모가 어떤 수치를 가지고 있는지를 알아내고자 마법 거울을 학습시킨다.
소제목
특징값
기계는 추상적인 말을 이해할 수 없기 때문에 추상적인 말을 표현하기 위해서는 수치화해야 한다.
이 때, 추상적인 것을 수치화하기 위해서는 추상적인 것의 어떤 점을 보아야 하는지를 알아야 하는데, 추상적인 것의 어떤 점을 수치로 나타낸 것을 특징값이라고 한다.
데이터
특징값을 많이 모아놓은 것을 데이터라고 한다.
특징값 벡터
숫자를 모아 놓은 것을 벡터라고 하고 특징 값을 나타낸 숫자들을 모아 놓은 것을 특징값 벡터라고 한다.
A를 나타내기 위한 특징값 벡터에는 A에 대한 정보만 들어 있어야 한다.
컴퓨터의 학습
책의 비유에 따라 왕비가 자신의 미모가 어떤 수치를 가지고 있는지 말하게 하려 할 때, 컴퓨터가 하는 일은 특징값 벡터 x를 입력했을 때, 이 사람이 얼마나 예쁜지를 출력하는 함수를 만드는 것이다.
컴퓨터는 어떻게 학습하는가?
우선 컴퓨터는 적당한 함수를 출발점으로 하여 이 함수의 모양을 데이터에 맞춰서 미세조정한다.
파라미터
일차함수로 가정하였을 때, 직선의 모양을 결정하려면 기울기와 직선의 위치를 결정해 주어야 한다. 이 두 값이 바로 직선을 결정하는 파라미터가 된다. 이와같이 함수를 결정하는 값들을 파라미터라고 한다.
함수를 조정하는 방법은?
파라미터 값을 바꿔 주면 여러 직선을 만들 수 있다.
기계는 추상적인 말을 이해할 수 없기 때문에 추상적인 말을 표현하기 위해서는 수치화해야 한다.
이 때, 추상적인 것을 수치화하기 위해서는 추상적인 것의 어떤 점을 보아야 하는지를 알아야 하는데, 추상적인 것의 어떤 점을 수치로 나타낸 것을 특징값이라고 한다.
데이터
특징값을 많이 모아놓은 것을 데이터라고 한다.
특징값 벡터
숫자를 모아 놓은 것을 벡터라고 하고 특징 값을 나타낸 숫자들을 모아 놓은 것을 특징값 벡터라고 한다.
A를 나타내기 위한 특징값 벡터에는 A에 대한 정보만 들어 있어야 한다.
컴퓨터의 학습
책의 비유에 따라 왕비가 자신의 미모가 어떤 수치를 가지고 있는지 말하게 하려 할 때, 컴퓨터가 하는 일은 특징값 벡터 x를 입력했을 때, 이 사람이 얼마나 예쁜지를 출력하는 함수를 만드는 것이다.
컴퓨터는 어떻게 학습하는가?
우선 컴퓨터는 적당한 함수를 출발점으로 하여 이 함수의 모양을 데이터에 맞춰서 미세조정한다.
파라미터
일차함수로 가정하였을 때, 직선의 모양을 결정하려면 기울기와 직선의 위치를 결정해 주어야 한다. 이 두 값이 바로 직선을 결정하는 파라미터가 된다. 이와같이 함수를 결정하는 값들을 파라미터라고 한다.
함수를 조정하는 방법은?
파라미터 값을 바꿔 주면 여러 직선을 만들 수 있다.
정방향 문제(Forward Problem)
함수가 주어져 있을 때, 어떤 입력에 대한 함수의 출력 값을 구하는 문제를 말한다.
역방향 문제(Backward Problem)
입력과 출력 사이의 관계가 이미 존재할 때, 이 관계와 모순되지 않는 함수를 찾아내는 문제를 말한다.
머신러닝(Machine Learning)
서로 관련있는 입력값과 출력값을 데이터로 주었을 때, 데이터에 함수가 부합하도록 파라미터를 움직여 맞푸는 과정을 학습이라고 한다. 그리고 이렇게 함수를 찾는 과정을 자동으로 수행하는 것이 머신러닝이다.
함수를 결정하는 파라미터를 조금씩 바꿔가면서 그 중 모든 데이터를 가장 잘 나타낼 수 있는 함수 하나를 찾는다.
최적화 문제(Optimization Problem)
컴퓨터는 함수를 추정하면서 출력이 데이터와 부합하도록 반복해서 파라미터를 조정한다. 정확도를 높이기 위해 파라미터를 반복 조정하는 것이다. 이와 같이 함수의 출력과 데이터의 오차가 적은 최적의 함수를 찾는 문제를 최적화 문제라고 한다.
정확도나 점수가 최대가 되도록, 만점을 목표로 파라미터를 미세 조정하는 문제를 말한다.
가중치(Weight)
한 데이터를 나타내는 특징값이 여러 개일 때, 어떤 특징값은 데이터를 나타내는 데 중요할 수도 중요하지 않을 수도 있다. 이런 중요도를 나타내는 값을 가중치라고 한다.
가중치는 학습해야 하는 함수의 파라미터로 가중치를 바꿔가면서 고정된 데이터에 함수의 모양을 맞준다.
모형(Model)
데이터에 맞는 함수를 학습할 때, 컴퓨터가 추정하여 학습하는 함수를 모형이라고도 한다.
오차함수(Error Function)
모형의 출력과 데이터가 얼마나 들어맞는지를 알아보기 위해 사용하는 것이다.
데이터와 모형의 출력이 얼마나 다른지를 나타내는 지표로 오차함수 값이 최대한 작아지도록 하는 것이 학습의 목표가 된다.
머신러닝에 맡기고 싶은 일이 무엇이냐에 따라 적합한 오차함수도 달라진다.
제곱합(Sum of Squares)
오차함수의 한 종류이다. 각 데이터와 모형의 출력값의 차를 제곱하여 합한 값인데, 데이터와 출력의 차이가 음수이든 양수이든 차이가 나는 것은 같기 때문에 제곱한 값을 기준으로 하면 편리하다.
함수가 주어져 있을 때, 어떤 입력에 대한 함수의 출력 값을 구하는 문제를 말한다.
역방향 문제(Backward Problem)
입력과 출력 사이의 관계가 이미 존재할 때, 이 관계와 모순되지 않는 함수를 찾아내는 문제를 말한다.
머신러닝(Machine Learning)
서로 관련있는 입력값과 출력값을 데이터로 주었을 때, 데이터에 함수가 부합하도록 파라미터를 움직여 맞푸는 과정을 학습이라고 한다. 그리고 이렇게 함수를 찾는 과정을 자동으로 수행하는 것이 머신러닝이다.
함수를 결정하는 파라미터를 조금씩 바꿔가면서 그 중 모든 데이터를 가장 잘 나타낼 수 있는 함수 하나를 찾는다.
최적화 문제(Optimization Problem)
컴퓨터는 함수를 추정하면서 출력이 데이터와 부합하도록 반복해서 파라미터를 조정한다. 정확도를 높이기 위해 파라미터를 반복 조정하는 것이다. 이와 같이 함수의 출력과 데이터의 오차가 적은 최적의 함수를 찾는 문제를 최적화 문제라고 한다.
정확도나 점수가 최대가 되도록, 만점을 목표로 파라미터를 미세 조정하는 문제를 말한다.
가중치(Weight)
한 데이터를 나타내는 특징값이 여러 개일 때, 어떤 특징값은 데이터를 나타내는 데 중요할 수도 중요하지 않을 수도 있다. 이런 중요도를 나타내는 값을 가중치라고 한다.
가중치는 학습해야 하는 함수의 파라미터로 가중치를 바꿔가면서 고정된 데이터에 함수의 모양을 맞준다.
모형(Model)
데이터에 맞는 함수를 학습할 때, 컴퓨터가 추정하여 학습하는 함수를 모형이라고도 한다.
오차함수(Error Function)
모형의 출력과 데이터가 얼마나 들어맞는지를 알아보기 위해 사용하는 것이다.
데이터와 모형의 출력이 얼마나 다른지를 나타내는 지표로 오차함수 값이 최대한 작아지도록 하는 것이 학습의 목표가 된다.
머신러닝에 맡기고 싶은 일이 무엇이냐에 따라 적합한 오차함수도 달라진다.
제곱합(Sum of Squares)
오차함수의 한 종류이다. 각 데이터와 모형의 출력값의 차를 제곱하여 합한 값인데, 데이터와 출력의 차이가 음수이든 양수이든 차이가 나는 것은 같기 때문에 제곱한 값을 기준으로 하면 편리하다.
지도학습(Supervised Learning)
데이터에 맞춰 오차함수 값을 줄이는 방법으로 데이터에 잠재된 입력과 출력의 관계를 학습하는 것이다. 실제 문제에서는 오차함수 값이 완전히 사라지는 경우는 드물기 때문에 개새는 오차함수 값이 가장 작아지는 것을 목표로 한다. 가능한 한 출력과 데이터의 차이가 작아지도록 하는 것이다.
비지도학습(Unsupervised Learning)
출력 값이 없는 경우에 사용한다. 데이터의 구조나 특징의 유사도 혹은 경향 같은 것을 기준으로 그룹을 나누는 작업인 클러스터링(Clustering) 등에 사용된다.
비지도학습의 개념은 매우 중요하다. 데이터를 있는 그대로 보지 않고 그룹으로 나눠진 결과를 보아야 발견할 수 있는 것도 있다.
ex) 이런 그룹에 속하는 사람은 피부 관리에 신경을 쓰는구나 등
미분(Derivative)
최적화 문제를 쉽게 푸는 요령에는 레버(파라미터, 가중치)를 살짝 움직여보고 오차가 줄어드는지 확인한 후 해당 레버를 움직이는 방법이 있다. 이 때, 레버를 살짝 움직여보는 과정을 미분이라고 한다.
경사 하강법(Gradient Descent)
학습의 목적은 오차를 줄이는 것으로, 미분을 통해 줄이는 방향이 맞는지 확인하고 오차가 줄어드는 게 멈출 때까지 레버(가중치)를 움직인다.
이렇게 오차가 줄어드는 방향으로 가중치를 조정해 가는 과정을 경사 하강법이라고 한다. 레버를 조금씩 움직일 때 오차가 어떻게 변하는지를 알아보는 방법인 미분, 이 미분 결과를 이용해서 최소가 될 때까지 오차를 점점 줄여나가는 것이다.
경사 하강법의 취약점
미분으로 알 수 있는 것은 레버를 아주 살짝 움직였을 때 오차가 어떻게 변할지 정도만이다. 아주 가까운 주변에 대해서만 알 수 있는 방법이기 때문에 그보다 거리가 멀어지게 되면 알 수 없게 된다. 전체 범위에서 최대로 작아진 것인지는 알 수 없다는 뜻이다.
다시 말하자면, 경사 하강법으로 다다를 수 있는 지점은 극소점(Local minima)이다. 이 극소점은 반드시 최소점(Global minimum)이 되지는 않는다.
훈련 데이터(Training Data)
데이터에 맞는 최적의 함수를 찾는 학습 과정에서 사용되는 데이터이다.
테스트 데이터(Test Data)
훈련 데이터로 학습한 결과를 적용하여 오차가 얼마나 생기는지 살펴보는 데 사용하는 데이터이다.
학습에 사용되지 않은 테스트 데이터에도 정확한 예측을 내릴 수 있다면 학습이 잘 되었다고 볼 수 있다. 반대로 예측이 정확하지 못하다면 학습이 잘 되지 않은 것이다.
일반화 성능(Generalized Performance)
일부 데이터만으로 학습한 후 전체 데이터로 모델을 사용하였을 때 보이는 성능을 말한다. 머신러닝의 요점은 이 일반화 성능을 좋게 하는 것이라 할 수 있다.
과적합(Overfitting)
훈련 데이터에 대한 예측은 정확한데 테스트 데이터에 대한 예측이 정확하지 못한 경우를 말한다. 연습문제를 가지고 시험공부를 열심히 해서 연습문제는 만점인데 정작 시험문제는 못 푸는 상황과 같다.
교차검증(Cross Validation)
가지고 있는 데이터의 종류를 훈련 데이터와 테스트 데이터로 나누어서 검증하는 것을 말한다. 가장 많이 쓰이는 방법은 데이터를 몇 갈래로 나누어서 그 중 한 갈래를 테스트 데이터 나머지 모두를 훈련 데이터로 삼는 방법이다.
예를 들어, 데이터를 4개로 나누었다면 하나는 테스트 데이터, 나머지 셋은 훈련 데이터로 사용한다.
테스트 데이터로 사용할 조각을 바꿔가면서 같은 과정을 반복한다(여기서는 4회 반복). 그렇게 모든 과정에서 예측이 정확한지 알아보는 것이다.
데이터에 맞춰 오차함수 값을 줄이는 방법으로 데이터에 잠재된 입력과 출력의 관계를 학습하는 것이다. 실제 문제에서는 오차함수 값이 완전히 사라지는 경우는 드물기 때문에 개새는 오차함수 값이 가장 작아지는 것을 목표로 한다. 가능한 한 출력과 데이터의 차이가 작아지도록 하는 것이다.
비지도학습(Unsupervised Learning)
출력 값이 없는 경우에 사용한다. 데이터의 구조나 특징의 유사도 혹은 경향 같은 것을 기준으로 그룹을 나누는 작업인 클러스터링(Clustering) 등에 사용된다.
비지도학습의 개념은 매우 중요하다. 데이터를 있는 그대로 보지 않고 그룹으로 나눠진 결과를 보아야 발견할 수 있는 것도 있다.
ex) 이런 그룹에 속하는 사람은 피부 관리에 신경을 쓰는구나 등
미분(Derivative)
최적화 문제를 쉽게 푸는 요령에는 레버(파라미터, 가중치)를 살짝 움직여보고 오차가 줄어드는지 확인한 후 해당 레버를 움직이는 방법이 있다. 이 때, 레버를 살짝 움직여보는 과정을 미분이라고 한다.
경사 하강법(Gradient Descent)
학습의 목적은 오차를 줄이는 것으로, 미분을 통해 줄이는 방향이 맞는지 확인하고 오차가 줄어드는 게 멈출 때까지 레버(가중치)를 움직인다.
이렇게 오차가 줄어드는 방향으로 가중치를 조정해 가는 과정을 경사 하강법이라고 한다. 레버를 조금씩 움직일 때 오차가 어떻게 변하는지를 알아보는 방법인 미분, 이 미분 결과를 이용해서 최소가 될 때까지 오차를 점점 줄여나가는 것이다.
경사 하강법의 취약점
미분으로 알 수 있는 것은 레버를 아주 살짝 움직였을 때 오차가 어떻게 변할지 정도만이다. 아주 가까운 주변에 대해서만 알 수 있는 방법이기 때문에 그보다 거리가 멀어지게 되면 알 수 없게 된다. 전체 범위에서 최대로 작아진 것인지는 알 수 없다는 뜻이다.
다시 말하자면, 경사 하강법으로 다다를 수 있는 지점은 극소점(Local minima)이다. 이 극소점은 반드시 최소점(Global minimum)이 되지는 않는다.
훈련 데이터(Training Data)
데이터에 맞는 최적의 함수를 찾는 학습 과정에서 사용되는 데이터이다.
테스트 데이터(Test Data)
훈련 데이터로 학습한 결과를 적용하여 오차가 얼마나 생기는지 살펴보는 데 사용하는 데이터이다.
학습에 사용되지 않은 테스트 데이터에도 정확한 예측을 내릴 수 있다면 학습이 잘 되었다고 볼 수 있다. 반대로 예측이 정확하지 못하다면 학습이 잘 되지 않은 것이다.
일반화 성능(Generalized Performance)
일부 데이터만으로 학습한 후 전체 데이터로 모델을 사용하였을 때 보이는 성능을 말한다. 머신러닝의 요점은 이 일반화 성능을 좋게 하는 것이라 할 수 있다.
과적합(Overfitting)
훈련 데이터에 대한 예측은 정확한데 테스트 데이터에 대한 예측이 정확하지 못한 경우를 말한다. 연습문제를 가지고 시험공부를 열심히 해서 연습문제는 만점인데 정작 시험문제는 못 푸는 상황과 같다.
교차검증(Cross Validation)
가지고 있는 데이터의 종류를 훈련 데이터와 테스트 데이터로 나누어서 검증하는 것을 말한다. 가장 많이 쓰이는 방법은 데이터를 몇 갈래로 나누어서 그 중 한 갈래를 테스트 데이터 나머지 모두를 훈련 데이터로 삼는 방법이다.
예를 들어, 데이터를 4개로 나누었다면 하나는 테스트 데이터, 나머지 셋은 훈련 데이터로 사용한다.
테스트 데이터로 사용할 조각을 바꿔가면서 같은 과정을 반복한다(여기서는 4회 반복). 그렇게 모든 과정에서 예측이 정확한지 알아보는 것이다.
소제목
알고리즘에서 배울 수 있는 것
같은 문제를 푸는 알고리즘에도 여러 방법이 있다. 이들 각각은 다른 특징을 갖고 있다. 계산량 등이 이런 특징으로 꼽을 수 있는데, 계산량이란 퍼즐을 푸는 데 얼만큼의 단계가 필요한지를 나타내는 척도라고 할 수 있다. 계산량이 적다면 문제를 푸는 데 걸리는 단계 수가 적으므로 간단한 문제라고 판단할 수 있다. 그러나 계산 과정에서 기억해 두어야 하는 중간 계산 값이 있는 문제처럼 메모리의 사용량이 늘어나는 경우도 있다.
계산량 외에도 이러한 메모리 사용량, 또 계산장치와 기억장치 사이에 정보가 오가게 되는 횟수 등 다양한 요소를 고려한 계산 과정을 누구나 그대로 수행할 수 있도록 표현한 것이 알고리즘이다.
알고리즘 연구의 역사를 거슬러 올라가면 배울 점이 아주 많다. 연구할 여지는 다시 말해 해결해야 할 약점이 있다는 의미다. 이러한 약점과 해결책의 관계를 파악할 수 있다면 다른 문제를 푸는 알고리즘에서 비슷한 한계에 부닥치게 되었을 때 대처할 수 있을 것이다. 알고리즘 공부는 현재 맞닥뜨린 문제를 풀기 위해 과거의 경험으로부터 힌트를 얻을 수 있는 효과적인 방법이다.
같은 문제를 푸는 알고리즘에도 여러 방법이 있다. 이들 각각은 다른 특징을 갖고 있다. 계산량 등이 이런 특징으로 꼽을 수 있는데, 계산량이란 퍼즐을 푸는 데 얼만큼의 단계가 필요한지를 나타내는 척도라고 할 수 있다. 계산량이 적다면 문제를 푸는 데 걸리는 단계 수가 적으므로 간단한 문제라고 판단할 수 있다. 그러나 계산 과정에서 기억해 두어야 하는 중간 계산 값이 있는 문제처럼 메모리의 사용량이 늘어나는 경우도 있다.
계산량 외에도 이러한 메모리 사용량, 또 계산장치와 기억장치 사이에 정보가 오가게 되는 횟수 등 다양한 요소를 고려한 계산 과정을 누구나 그대로 수행할 수 있도록 표현한 것이 알고리즘이다.
알고리즘 연구의 역사를 거슬러 올라가면 배울 점이 아주 많다. 연구할 여지는 다시 말해 해결해야 할 약점이 있다는 의미다. 이러한 약점과 해결책의 관계를 파악할 수 있다면 다른 문제를 푸는 알고리즘에서 비슷한 한계에 부닥치게 되었을 때 대처할 수 있을 것이다. 알고리즘 공부는 현재 맞닥뜨린 문제를 풀기 위해 과거의 경험으로부터 힌트를 얻을 수 있는 효과적인 방법이다.
댓글 없음:
댓글 쓰기