2024. 1. 29. 16:49ㆍTIL
머신러닝 기초 개념
머신러닝은 데이터에서 지식을 추출하는 작업으로 머신 스스로가 데이터를 바탕으로 그 안에 있는 특징과 패턴을 찾아낸다. 인공지능은 기계가 사람의 지적 능력을 모방하는 것을 말한다. 머신러닝은 학습을 통해 사람처럼 예측을 진행하게 하는 방법이고 딥러닝은 사람의 인지과정을 모방하는 머신러닝의 한 종류이다.(AI ⊃ ML ⊃ DL)
명시적 프로그램은 머신러닝 이전의 문제 해결 방법론으로 문제를 해결하기 위한 규칙(하드 코딩 된 if-else 명령어 집합)을 수동으로 사전에 정의한다. 대표적으로 스팸 메일을 분류하는 과정이 있다. 장점은 처리 과정을 사람이 이해하기 쉽고 작은 데이터에서 효과적이다. 단점은 특정 규칙은 한 분야나 작업에 국한되고 변경에 대응이 어려우며 규칙 설계 시 해당 분야의 전문가가 필요하다.
명시적 프로그램의 한계를 극복할 수 있는 기법이 머신러닝이다. 머신러닝은 데이터 내부에서 자주 발생하는 특징과 패턴(feature)을 감지하고 문제를 해결하기 위한 판단 기준을 시스템 스스로 찾아낸다. 구체적으로 명시할 수 없는 규칙을 찾을 수 없는 규칙을 찾을 수 없다면 머신 스스로가 그것을 찾아내게 하는 방법이 좋은 솔루션이다. 장점은 예상치 못한 상관 관계를 파악하는데 탁월하고 특정 도메인에서 전문가가 필수로 필요하지 않는다. 단점은 머신이 패턴을 파악할 수 있도록 다양한 데이터가 필요하고 결과 분석 과정에서 사림이 이해할 수 없는 포인트가 존재할 수 있다.
머신러닝은 다양한 어플리케이션과 연구 분야에서 활용된다. 예를 들어 영화, 음식, 쇼핑에서의 개인화 추천, FaceID, 의료 영상 처리, 음성 처리, 금융 데이터 예측 등이 있다.
머신러닝 프로젝트 로드맵은 다음과 같다.
- 문제정의: 파이프라인, 모델 입/출력
- 데이터 확인: 시각화, 특성 파악
- 데이터 분할: 학습/ 검증/ 테스트, 편향성 확인, 아웃라이어 제거
- 알고리즘 탐색: 선행 연구 및 선행 프로젝트 참고
- 데이터 전처리: 알고리즘 고려, 선행 과정 참고
- 학습과 검증: 최적 모델 탐색, 반복 작업
- 최종 테스트: 테스트 데이터 활용, 보고
- 시스템 런칭: 모니터링, 유지 보수
머신러닝 종류
메타 데이터란 주어진 기본 데이터에 추가적으로 제공하는 정보를 의미한다. 데이터의 출처, 형식, 위치 등 데이터 간의 관계와 구조를 파악하거나 데이터의 속성, 특성, 분류 등 데이터의 내용을 설명한다. 레이블은 특정 문제에 해당하는 데이터의 설명 혹은 답변을 의미한다. 분류를 하는 문제라면 데이터가 속할 범주(클래스), 목표 값을 찾는 회귀 문제라면 데이터가 표현할 특정 숫자이다. 레이블은 대부분 사람이 직접 생성해줘야 하는 경우가 많으며 타켓이라고 부르기도 한다.
지도 학습(Supervised Learning)은 정답 레이블 정보로 활용해 알고리즘을 학습하는 학습 방법론이다. 이 방법으로 학습되는 알고리즘은 데이터와 정답인 레이블 사이의 관계를 파악하는 목적을 갖고 있다. 장점은 정답이 존재하므로 모델이 풀어야하는 문제가 비교적 쉽고 잘 학습 되고 명확한 평가 수치가 존재하며 학습된 모델의 성능을 쉽게 측정할 수 있다. 단점은 정답이 필요하므로 이를 위해 추가적인 시간, 노동, 비용이 필요해서 정답을 매기는 행위에 필요한 전문 인력과 같은 추가 비용이 발생한다.
비지도 학습(Un-Supervised Learning)은 정답 레이블 정보가 없이 입력 데이터만을 활용해 알고리즘을 학습하는 학습 방법론이다. 이 방법으로 학습되는 알고리즘은 데이터 내부에 존재하는 패턴을 스스로 파악하는 목적을 갖고 있다. 장점은 정답을 따로 준비할 필요가 없으므로 비용적인 이점이 있다. 그리고 사용자가 의도한 패턴 이외의 새로운 패턴을 찾을 가능성이 있으며 창작과 같은 다양한 활용 분야에 사용할 수 있다. 단점은 학습된 모델의 성능을 측정하기 위한 기준이 없어 결과 해석이 주관적일 수 있고 신뢰할 수 있는 결과를 얻기 위해 다수의 데이터가 필요하다.
준지도 학습(Semi-Supervised Learning)은 일부의 데이터만 정답이 존재하고, 다수의 데이터에는 레이블이 없는 상황에서 알고리즘을 학습하는 학습 방법론이다. 이 방법으로 학습되는 알고리즘은 지도 학습과 비지도 학습의 특징을 일부 차용하여 일부 레이블링된 데이터로 특성을 파악하고 레이블링 되지 않은 데이터로 전체 데이터의 패턴을 파악하는 방식으로 학생이 진행한다. 장점은 레이블이 부족한 데이터셋에서 유용하고 많은 데이터를 활용할 수 있으므로 일반화 성능을 향상시킬 수 있다. 단점은 품질이 낮은 레이블이나 데이터 존재에 특히 취약할 수 있고 알고리즘의 복잡성이 증가하여, 구현 및 활용에 어려움이 있을 수 있다.
자기 지도 학습(Self-Supervised Learning)은 정답이 하나도 없는 데이터에서, 정답을 강제로 생성 후 학습하는 학습 방법론이다. 이 방법으로 학습되는 알고리즘은 데이터 내부를 강제로 훼손 후 복원하는 방법을 주로 사용하며 과정에서 특정 데이터 내부의 성질을 파악하는데 사용된다. 이렇게 만들어진 알고리즘은 해당 데이터를 이용한 다른 문제에 적용한다. 장점은 레이블 없이 데이터의 특징을 파악할수 있고 다양한 데이터에 활용할 수 있다. 단점은 목적하는 문제를 직접적으로 해결하는 것이 아니므로 N회 이상의 추가적인 학습 과정이 필요할 수 있다. 그리고 알고리즘이 잘못된 패턴을 학습할 위험이 있다.
강화 학습(Reinforcement Learning)은 어떤 환경에서 상호작용하는 에이전트가 보상을 이용해 특정 행동을 하도록 유도하는 학습 방법론이다. 이해를 위해 강아지에게 '앉아'를 가르치는 훈련사를 예를 들어 본다. 강아지는 다양한 행동을 하고 훈련사는 강아지가 앉는 행동을 하면 간식을 준다. 강아지는 어쩌다가 먹은 간식을 더욱 많이 먹기위해 간식을 먹을 수 있는 상황을 인지하게 되고 지속적으로 그런 행동을 반복하며 훈련이 된다.
머신러닝에 필요한 선행대수
선형대수는 수들이 모여있는 개념(벡터, 행렬)과 관련된 식을 연구하는 수학의 분야로 수를 다루는 많은 학문에서 수의 연산을 빠르고 효과적으로 하기 위해 사용하는 도구이다. 수의 집합을 기하학적인 형상으로 적용하여 표현해서 시각적이고 직관적으로 수의 값을 이해할 수 있다. 숫자는 특정한 방향으로 줄을 서듯 모일 수 있고 방향을 보통 차원이라고 한다. 숫자들이 얼마나 모이는지에 따라 크기가 정해진다. 데이터를 벡터 혹은 행렬의 형태로 변환 가능하다.
- 스칼라 : 다른 숫자와 함께하지 않고 홀로 존재하는 수
- 벡터 : 한쪽 방향(차원)으로만 숫자가 모인 형태 → 1차원
- 행렬 : 두 방향으로 숫자가 줄을 선 형태 → 2차원
- 텐서 : 벡터와 행렬을 일반화한 개념.
- 0차원 텐서를 스칼라라고
- 1차원 텐서를 벡터라고
- 2차원 텐서를 행렬이라고 부르며
- 3차원 이상의 수 집합을 나타내는 용어이기도 함
행렬은 수의 집합이므로 연산이 가능하다. 행렬의 덧셈과 뺄셈은 같은 크기의 행렬끼리만 가능한데 각 행렬의 같은 자리에 있는 원소끼리 덧셈과 뺄셈을 한다. 행렬의 곱셈은 일반적인 수의 곱과 다르다. 행렬의 곱은 한 행렬의 각 행과 다른 행열의 각 열 간 내적을 의미한다. 내적은 두 벡터의 동일한 위치에 있는 원소를 곱한 후, 그 결과를 모두 더하는 연산으로 결과는 스칼라이다. 행렬의 크기가 달라도 연산은 가능하나 앞 행렬의 열과 뒤 행렬의 행 크기가 같아야 한다. 참고로 같은 크기의 행렬에서 각 요소 별로 곱하는 연산은 Hadmard Product라고 한다.
하나의 행렬이 주어질 때, 행과 열을 바꾼 행렬을 전치 행렬(Transpose)라고 한다. A 행렬의 전치 행렬은 A^T으로 표기한다. 대각선 원소는 전치 과정에서 유지되며 A = A^T인 경우, A를 대칭 행렬이라고 한다. (A*B)^T = B^T * A^T
특정 행렬 A에 어떤 행렬 B를 곱하니 결과가 항등 행렬 I 라면 B를 A의 역행렬(Inverse Matrix)라고 한다. 모든 행렬이 역행렬을 갖지 않고 역행렬을 가지려면 반드시 가역(또는 비특이, non-singular)해야 한다(det(A) ≠ 0). (A^T)^-1 = (A^-1)^T
특정 벡터에 어떠한 행렬을 곱하면 벡터의 방향 혹은 크기가 변한다. 이렇듯 벡터의 방향과 크기의 변경을 선형 변환이라 한다. A 행렬에 임의의 벡터 v를 곱하니 벡터 v의 크기를 상수 λ배 한 벡터와 같다면(A*v = λ*v) v를 고유벡터(Eigenvector), λ를 고유값(Eigenvalue)라고 한다. 행렬 A의 고유벡터는 행렬 A의 값이 가장 많이 분산되는 방향을 나타낸다. 분산이 많이 된다는 것은 많은 정보력을 갖고 있다고 볼 수 있다. 데이터를 담아온 행렬을 A라고 보면, 데이터가 담고 있는 여러 정보 중 가장 의미가 큰 방양이 고유 벡터가 된다. 해당 방향으로 얼만큼 분산이 이루어졌는지 분산의 크기를 나타내는 정도는 고유값이다. 고유벡터와 고유값은 의미를 유지한 상태로 데이터를 전처리 하거나 행렬 계산을 간소화 하는 과정에서 사용된다.
특이값 분해(Singular Value Decomposition, SVD)는 복잡한 행렬 A를 더 간단한 세가지 행렬(U, ∑, V^T)로 분해하는 과정이다(A = U*∑*V^T ). U의 열 벡터들은 A의 왼쪽 특이벡터로 A*A^T의 고유 벡터, V의 열 벡터들은 A의 오른쪽 특이벡터로 A^T*A의 고유 벡터, ∑의 대각선 위의 값들로 A의 특이값이다. 고유벡터와 고유값 분석은 행렬 A가 정사각 행렬일 경우에 사용 가능하나 SVD는 직사각 행렬 A에 대해서도 사용 가능하다.
A 행렬의 크기가 (m X n)이라고 할 때, 정사각 행렬이 아니므로 바로 고유벡터와 고유값 분석을 할 수 없다. 따라서 행렬 A에서 행과 열 방향으로 나눠 행 사이의 관계를 따로 보고 열 사이의 관계를 따로 볼 것이다. A*A^T는 (m X m)의 크기를 갖고 있어 고유벡터와 고유값 분석이 가능하다. A*A^T는 원래 행렬 A의 행 사이의 관게도가 데이터의 형태로 존재하며 그들의 정보력 중 분산이 크고 중요한 의미를 갖는 방향 벡터가 U 행렬 안에 정리될 것이다.
A*A^T 혹은 A^T*A의 고유값의 제곱근 값을 A의 특이값이라고 한다. A*A^T 와 A^T*A의 고유값은 서로 같다. ∑ 행렬은 A의 특이값을 대각선 위치에 갖고 있고 대각선을 제외한 나머지 모든 값은 0이다. ∑ 행렬은 고유값 분석과 마찬가지로 행렬 A의 선형 변환에서 중요한 스케일링 정보를 포함하고 있다.
머신러닝에 필요한 확률 이론
확률이란 특정한 사건이 일어날 가능성을 0~1사이의 수치로 표현한 것이다. P(x)는 확률 변수 x가 특정 값을 가질 확률이다. 두 사건이 A, B가 서로 배타적이라면 A 또는 B일 확률은 P(A) + P(B)이고 합의 법칙이라 한다. 두 사건 A, B가 서로 독립일때, A와 B가 동시에 일어날 확률은 P(A)*P(B)이고 곱의 법칙이라 한다. 조건부확률은 사건 B가 일어난 상태에서 사건 A가 일어날 확률이고 P(A)|P(B)이다.
확률 분포는 확률 변수가 취할 수 있는 값들과 그 값들이 발생하는 확률을 설명하는 개념이다. 크게 이산확률분포와 연속확률분포로 나눌 수 있다. 이산확률분포는 확률 변수가 취할 수 있는 값이 개별적이고 셀 수 있는 경우이다. 확률 분포이므로 각 변수에 해당하는 확률 값의 총 합은 1이다. 연속확률분포는 확률 변수가 연속적인 범위의 값(실수 범위의 값)을 취할 수 있을 때 적용된다. 확률 분포이므로 가능한 모든 확률 변수 전 구간의 적분 값은 1이고 변수의 범위가 실수이므로 딱 하나의 구체적인 값에 대한 확률은 0이다.
확률 변수는 실험, 관찰, 또는 무작위 과정의 결과로 나타날 수 있는 수치적인 값이다. 확률 변수는 확률 분포에 영향을 받으며 만약 확률 분포를 알고 있다면 확률 변수를 임의로 생성할 수 있다. 이를 샘플링(Sampling)과정이라 한다.
확률론적 모델링은 주어진 데이터를 확률 이론의 과정에서 해석하고 모델을 설계하는 과정을 의미한다. 데이터에 존재하는 불확실성(noise)을 인정하면서 데이터가 특정 확률 분포를 따른다고 가정 후, 분포를 데이터의 특성을 분석하거나 미래의 사건에 대한 예측에 활용한다. 머신 러닝 모델의 출력은 확률론적 관점에서 예측된 결과물이므로 실제 결과물과 차이가 있을 수 있다. 일반적으로 모델의 예측은 y-hat, 실제 정답은 y, 사용하는 입력 데이터는 x로 표시한다.
공부하며 어려웠던 내용
특이값 분해의 개념은 이해가 되었지만 실제로 적용하기 위해 좀 더 공부해야 겠다.
'TIL' 카테고리의 다른 글
| 선형 회귀와 선형 분류 (1) | 2024.01.30 |
|---|---|
| 지도학습 알아보기 (0) | 2024.01.30 |
| 5. Tableau소개와 대시보드 생성 (0) | 2024.01.26 |
| 4. SuperSet 소개와 대시보드 생성 (1) | 2024.01.25 |
| 3. 다양한 지표 소개 (2) | 2024.01.24 |