1. 인공지능 개요
1.1. 인공지능이란?
-
역량에 따른 분류
- 협의적 인공지능: 약인공지능(weak), 좁은 인공지능(narrow)
- 범용 인공지능(general): 강인공지능(strong), 인공 일반 지능(AGI)
- 초지능 인공지능(super)
-
전통적 프로그래밍과 머신러닝의 차이
- 전통적 프로그래밍: 프로그래머가 직접 작성한(explicit) 프로그램에 입력 데이터를 사용하고 프로그램을 실행하여 출력을 생성한다. (data + program(fuction) → output)
- 머신러닝: 입력 데이터와 정답이 있는 출력이 알고리즘에 공급되어 프로그램(모델)을 생성한다. (data + output → program(fuction))
- 코드 vs 데이터의 관점?
1.2. 인공지능 역사
-
규칙 기반의 논리적 추론(기호주의)에서 신경망과 분산 계산(연결주의)으로의 패러다임 전환
-
기호주의(symbolism)
- 인간의 지능과 지식을 기호화하여 학습시키는 방법
- 전문가 시스템(expert system)
-
연결주의(connectionism)
- 두뇌 신경 조직을 모형화하고 여러 신경을 네트워크 구조로 연결해 연결 강도를 학습시키는 방법
1.3. 인공지능과 머신러닝, 딥러닝
-
인공지능 > 머신러닝 > 딥러닝
- 인공지능(AI): 인간의 지능을 구현하고자 하는 기술
- 머신러닝(ML): 주어진 데이터를 기반으로 기계가 스스로 학습하는 기술
- 딥러닝(DL): 퍼셉트론으로 구성된 인공신경망으로 여러 단계의 심층 학습을 통하여 스스로 학습하는 기술
-
머신러닝과 딥러닝의 대략적인 차이
- 머신러닝: 특징을 수동으로 추출한다.
- 딥러닝: 특징을 자동으로 추출한다.
- 정확히는 전통적인 ML도 특징 학습이 가능하지만 표현학습의 수준과 규모가 다르다.
-
표현 학습
- 원시 데이터를 기계가 이해하고 처리하기 쉬운 형태(표현)로 자동으로 변환하는 방법을 배우는 과정
- e.g. 합성곱 신경망(CNN)
2. 머신러닝
2.1. 머신러닝 절차와 주요 용어
(1) 머신러닝 절차
- 머신러닝 수행 과정
- 0. 문제 정의
-
- 데이터 수집: kaggle, 공공 dataset 등
-
- 데이터 전처리: 정규화 등
-
- 모델 설계: 활성화 함수 선택, CNN 등
-
- 모델 학습, 시각화, 성능 개선 등
-
- 평가, 배포, 모니터링 등
(2) 주요 용어
-
문제 파악
- 회귀(regression): 연속값을 예측하는 문제
- 분류(classification): 불연속적인 이산값을 예측하는 문제
-
데이터 종류 예시
- 표
- 이미지 (→ 합성곱 CNN)
- 시계열 (→ 순환 RNN)
-
탐색적 데이터 분석(EDA: Exploratory Data Analysis)
- 특성(features): 예측값, 목표(target)를 위한 속성
- 레이블(label): 이미 아는 정답
- 결측치(missing value): 빠진 데이터 값
- 이상치(outlier): 정상적인 범주를 벗어난 값
-
dataset 분할
- train 80%, validation 10%에 test 10% 등
- 테스트 데이터는 절대 모델 학습이나 튜닝에 사용되지 않아야 한다.
-
하이퍼파라미터(hyperparameter)
- 모델이 학습을 통해 자동으로 찾는 파라미터가 아닌, 개발자가 직접 설정해주는 값
- 선형 회귀: 배치 경사하강법의 학습률(learning rate)
- 신경망: 층 수, 뉴런 수, batch size, epoch 수, 옵티마이저 종류, 드롭아웃 비율
- CNN: 필터 크기, 채널 개수
2.2. 머신러닝 분류
-
지도 학습(supervised learning)
- label이 있는 데이터로 학습하는 방법
- 지도 학습의 대표적 알고리즘: 선형 모델과 K-최근접 이웃(KNN) 알고리즘
-
비지도 학습(unsupervised learning)
- label이 없는 데이터로 학습하는 방법
- 비지도 학습의 대표적 알고리즘: K-평균(means) 군집화(clustering) 알고리즘과 차원 축소
-
강화 학습(reinforcement learning)
- 보상을 얻기 위한 정책을 다음 행동에 반영시키는 방법
- agent가 환경(environment)을 관찰(observation)하여 다음 행동(action)을 하면 reward 또는 penalty를 줌으로써, 가장 큰 보상을 얻기 위한 정책(policy)를 통해 스스로 학습하는 방법
-
자기지도 학습(self-supervised learning)
- 2025년 AI 트렌드에서 핵심 기술 중 하나
- 데이터 자체에서 학습에 필요한 신호(가짜 라벨)를 만들어서 학습하는 방식
2.3. 평가 지표
- 분류(Classification) 모델의 성능을 평가하는 혼동행렬
3. 딥러닝
3.1. 퍼셉트론과 인공신경망
(1) 퍼셉트론
-
퍼셉트론(perceptron):
- 뉴런을 모방한 모델로, 다수의 신호를 입력 받아서 하나의 신호로 출력한다.
- 출력(output):
-
가중합(weighted sum):
- 가중치(weight):
- 입력(input):
- 편향(bias):
- 딥러닝 알고리즘(SGD 등)에 의해 가중치와 편향의 최적값이 자동으로 결정된다.
-
활성화 함수(activation function):
- 퍼셉트론에서 최종 값을 결정하는 함수
-
활성화 함수의 종류
- 단위 계단 함수(unit step function)
- ReLU(Rectified Linear Unit)
- 시그모이드(sigmoid)
- 하이퍼볼릭탄젠트(tanh)
- softmax
-
softmax
- 출력값이 확률 분포로 해석되어 총합이 항상 1이 된다.
- 숫자 인식과 같이 여러 label 중에 1개를 classification할 때는 softmax가 적합하다
- 단, O/X 문제와 같이 2개를 classification할 때는 sigmoid도 사용 가능하다.
(2) 인공신경망
-
인공신경망(ANN: Artificial Neural Network)
- 퍼셉트론을 여러 층으로 확장한 모델
-
다층 퍼셉트론(MLP: Multi-Layer Perceptron)
- 인공신경망을 확장해 여러 개 연결한 층를 쌓아 구성된다.
-
심층신경망(DNN: Deep Neural Network) → 딥러닝
- 입력층과 출력층 사이에 여러 개의 은닉층으로 구성된다.
-
신경망의 층(layer)
- 입력층(input layer): 활성화 함수가 없기 때문에 층/수로 취급하지 않는다.
- 은닉층(hidden layer): 사람이 보고 이해할 수 없는 내용의 층이다.
- 은닉층이 0~1개이면 shallow neural network
- 은닉층이 2개 이상이면 deep neural network
- 출력층(output layer)
- e.g. 2층 신경망은 입력층(0층), 은닉층(1층), 출력층(2층)으로 구성된다.
-
합성곱 신경망(CNN: Convolutional Neural Network)
- 주로 이미지 처리에 사용됨
- 딥러닝 CNN
-
순환 신경망(RNN: Recurrent Neural Network)
- 주로 순차적인 데이터(시계열 데이터 등)에 사용됨
3.2. 인공신경망의 학습
(1) ‘학습한다’의 의미
- 개념적 설명: 데이터에 대한 추세선을 가장 작은 MSE로 구하는 것
- 수식적 설명: 미분값이 0이 되어 오차가 더이상 변하지 않을 때까지 W를 갱신한다.
- learning rate만큼 갱신, 데이터에 따라 적절한 learning rate(η) 값이 중요
(2) 신경망 학습 과정
-
- 순전파(forward propagation)
- 입력을 받아서 신경망을 따라 출력을 계산한다. (prediction)
-
- 손실 계산(loss calculation)
- 모델의 예측 결과와 실제 정답(label) 간의 오차(loss)를 MSE 등의 함수로 계산한다.
-
- 역전파(Backpropagation)
- 오차를 기반으로 각 가중치가 손실에 미친 영향을 계산한다.
- 이때 미분을 사용해서 손실 함수에 대한 가중치의 기울기(gradient)를 구한다.
- 오차역전파(error backpropagation): 학습 과정에서 가중치를 수정하기 위해 순전파의 반대 방향으로 학습을 하는 과정
-
- 가중치 업데이트(gradient descent)
- 가중치를 기울기 방향의 반대 방향으로 조정하여 손실을 줄인다. (feedback)
(3) 손실 함수
-
손실 함수(loss function), 비용 함수(cost function), 목적 함수(objective function)
- 인공신경망에서 학습 지표인 목표값의 계산식 (→ 오차를 정의한 함수)
-
회귀 문제의 평균 제곱 오차(MSE: Mean Squared Error)
- 예측값과 실제값의 차이를 제곱해서 평균, 큰 오차에 더 민감
-
분류 문제의 교차 엔트로피 손실(CEL: Cross-Entropy Loss)
- 정답 클래스에 높은 확률을 줄수록 loss 감소
- 정답 클래스에 낮은 확률을 주거나, 오답 클래스에 높은 확률을 줄수록 loss 증가
-
엔트로피: Σ 발생 확률(확률 분포) × 코딩 길이 → 정답 분포 자체의 불확실성
- 각 사건의 발생 확률이 같은 균일 분포일 때 최대 (worst case)
(4) 옵티마이저
-
옵티마이저(optimizer)
- 손실 함수를 최소화(minimize)하기 위해 모델의 파라미터(가중치 등)를 조정하는 최적화 알고리즘
-
경사하강법(gradient descent)
- 어떤 손실함수가 정의되었을 때, 손실함수의 값이 최소가 되는 지점을 찾아 가는 방법
-
확률적 경사하강법(SGD: Stochastic Gradient Descent)
- 매개변수 W를 갱신()하는 알고리즘
- early stopping·epoch 제한 등으로 오차가 더 이상 변하지 않을 때까지 반복한다.
-
adam(adaptive moment estimation)
(5) 가중치 업데이트 파라미터
- 학습률(learning rate)
- 가중치 업데이트 정도(학습 진행 속도)를 조절하는 하이퍼파라미터
- 너무 작으면 학습 속도가 매우 느리거나 local minimum에 빠져 정체 될 수 있음
- 너무 크면 loss값이 발산하여 학습이 전혀 안 될 수 있음
3.3. 성능 저하
-
경사 소실(vanishing gradient)
- 역전파할 때 기울기(gradient)가 너무 작아져서 가중치가 거의 업데이트되지 않는 현상
-
과적합(overfitting)
- 모델이 학습 데이터에는 너무 잘 맞지만, 새로운 데이터에는 성능이 나쁜 경우
-
dropout
- 과적합을 줄이기 위한 정규화 기법
- 학습 중에 일부 뉴런의 출력을 확률적으로 0으로 만들어 변경된 신경망을 통해 학습을 수행
- 매번 미니배치 학습을 할 때마다 새로 랜덤으로 dropout을 적용하여 학습
-
극소(local minimum)
- 비용 함수(loss function)에서 더 이상 내려갈 수 없지만, 진짜 최소값(전역 최소, global minimum)은 아닌 지점
- 사실 딥러닝같은 고차원 함수에서는 극소보다는 saddle point가 훨씬 많다.
3.4. 다양한 인공신경망 라이브러리
- tensorflow
- pytorch
3.5. transformer 아키텍처
-
2017년 논문 “Attention Is All You Need” (Vaswani et al.)에서 제안
-
RNN·CNN의 순차 계산 병목을 해소해 대규모 병렬 학습·긴 문맥 처리가 가능해짐
-
2017 이후 딥러닝 연구·산업 양쪽에서 사실상 표준
-
주요 파생 모델
- BERT(양방향 인코더) → 문장 이해
- GPT 시리즈(오토리그레시브 디코더) → 텍스트 생성