Rule-Based Programming (규칙 기반 프로그래밍)
- 연산을 사람이 다 함 소프트웨어 1.0: 모든 로직과 규칙을 사람이 직접 코딩
- 장점: 명확하고 제어 가능하며, 작은 시스템에서 매우 효율적
- 단점: 복잡한 문제를 다루기 어렵고, 유지 보수가 어려움.
Conventional Machine Learning (전통적 기계 학습)
- 사람이 피처를 디자인하면 기계가 좋은지 안 좋은지 판단함 소프트웨어 1.5: 사람이 직접 특성(feature)을 선택하고 디자인하며, 알고리즘이 데이터를 학습하여 패턴을 찾아냄
- 장점: 도메인 지식을 활용하여 특성을 설계
- 단점: 특성 엔지니어링이 많은 시간과 노력을 필요
Deep Learning (딥 러닝)
- 나올 때까지 모든 계산을 기계가 해줌 소프트웨어 2.0: 인간이 특성을 직접 설계하지 않고, 기계가 스스로 데이터를 통해 특성을 추출하고 학습합니다.
- 장점: 대규모 데이터와 복잡한 문제를 처리하는 데 매우 효과적입니다.
- 단점: 많은 데이터와 계산 자원이 필요합니다.
Pre-training and Fine-tuning (사전 학습과 미세 조정)
- 미리 Pretrained 해놓고, 테스크 값만 변경: 소프트웨어 3.0 사전 학습된 모델을 사용하여 새로운 작업에 맞게 미세 조정합니다.
- 장점: 새로운 작업을 빠르고 효율적으로 처리할 수 있습니다.
- 단점: 사전 학습된 모델의 품질에 의존합니다.
Big Models & Zero/Few-shot Learning (대규모 모델과 제로/퓨 샷 학습)
- Pre-training 하면서 task는 설명을 해줌 소프트웨어 3.0 In context Learning: 대규모 모델은 사전 학습을 통해 다양한 작업을 수행할 수 있으며, 새로운 작업에 대해 적은 양의 예시(심지어 예시가 없을 때도)를 통해 학습할 수 있습니다.
- 장점: 매우 유연하며, 다양한 작업에 쉽게 적용할 수 있습니다.
- 단점: 대규모 모델의 훈련과 실행에 많은 자원이 필요합니다.
AI는 크게 정형(Tabular Data) 과 비정형 데이터로 나뉘고, 비정형 데이터는 이미지/동영상, 텍스트, 음성 등으로 나뉘며 이미지/동영상은 컴퓨터 비전, 텍스트는 자연어 처리, 음성은 음성 인식/생성으로 다루는 것이다.
정형은 딥러닝 하기에는 조금 비효율적이며, 구조화된 데이터이다. 주로 회귀/분류 태스크를 수행한다. 딥러닝을 통해서 비정형데이터를 정형데이터로 만들 수 있다.
컴퓨터 비전은 가장 많이 상품화된 기술이다. 이미지를 원하는 출력이 뭐냐에 따라 달라진다. 얼굴인식(누구의 얼굴, 분류)
얼굴 검출(얼굴의 위치, 회귀), 성별 인식(분류), 나이(회귀) 등으로 나뉜다. Super Resolution같이 이미지 복원 기술도 컴퓨터 기술이라고 불린다,
지문 인식, 번호판 인식, 자율 주행, 명함 인식(리멤버), 영수증 인식(네이버 영수증 리뷰), 동영상 요약(타임 랩스), 배경 제거(누끼 따기), 스타일 변환(스노우 ai프로필) 등등도 컴퓨터 비전이라고 할 수 있다.
자연어 처리는 입력으로 텍스트 데이터를 받는 AI이다. 주어진 글에 이어서 문장 작성. 생성하는 문장생성, 혐오적인 표현 존재 여부 및 분류를 하는 혐오글 분류, 다른 나라 언어로 번역 및 생성을 하는 번역, 글에서 느껴지는 감정을 분류하는 감정분류로 나뉜다.
입출력이 음성 데이터라면 음성 인식 및 생성이다. 주로 자연어 처리와 함께 쓰인다.
인식 기술은 비정형 데이터에서 정보를 추출할 때 사용된다.(비정형 데이터의 정형화), 생성 기술은 의도된 정보가 담긴 비정형데이터를 만들어 내는 기술을 생성이라고 한다.
AI는 감지, 추론, 행동 적응이 가능한 프로그램, ML은 데이터 기반으로 개발, DL은 모델의 구조가 뉴럴 넷이다.
딥러닝을 구성하는 필수적인 요소
성능=모델(구조) + 데이터 + 학습 방법(손실 함수, 최적화/기타 알고리즘) 3가지로 나뉜다.
모델(Model) = 주어진 데이터를 원하는 결과로 변환
다중 퍼셉트론(MLP), 컨볼루션 신경망(CNN), 순환 신경망(RNN)
데이터(Data) = 모델을 학습하기 위해 필요한 데이터(Data)
해결하고자하는 문제(task)에 따라 데이터의 형태나 구성이 달라짐
Mnist, Fashion Mnist
학습
1) 모델의 결과에 대한 오차를 수치화하는 Loss Function
MAE, MSE, CE(교차 엔트로피)
2) Loss Function을 최소화 되도록 모델의 파라미터를 조정하는 Optimization Algorithm
경사하강법(GD), 확률적 경사 하강법(SGD), 모멘텀(Momentum)
3) 성능 향상을 위한 기타 알고리즘
Dropout, Regulation, Normalization
Parameter란 매개변수라고도 불리며 어떠한 시스템이나 함수의 성질을 나타내는 변수이다. 예를들면 y=ax+b일 때 파라미터는 a,b이다.
class CNN(nn.Module):
def __init__(self, num_classes):
super(CNN,self).__init__()
self.block1 = BasicBlock(in_channels=3, out_channels=32, hidden_dim=16)
self.block2 = BasicBlock(in_channels=32, out_channels=128, hidden_dim=64)
self.block3 = BasicBlock(in_channels=128, out_channels=256, hidden_dim=128)
self.fc1 = nn.Linear(in_features=4096, out_features=2048)
self.fc2 = nn.Linear(in_features=2048, out_features=256)
self.fc3 = nn.Linear(in_features=256, out_features=num_classes)
self.relu = nn.ReLU()
def forward(self, x):
x = self.block1(x)
x = self.block2(x)
x = self.block3(x)
x = torch.flatten(x, start_dim=1)
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
x = self.relu(x)
x = self.fc3(x)
return x
중간 중간 relu함수를 사용하는 이유
- 비선형성 추가:
- ReLU(Rectified Linear Unit) 함수는 비선형성을 추가하여 신경망이 복잡한 함수를 학습할 수 있게 합니다. 신경망의 각 층에서 비선형성을 도입함으로써, 모델이 더 다양하고 복잡한 데이터 패턴을 학습할 수 있습니다.
- 그레디언트 전파:
- ReLU는 입력이 0보다 큰 경우에는 그 입력 값을 그대로 출력하고, 0 이하의 경우에는 0을 출력합니다. 이 특성은 역전파(backpropagation) 과정에서 그레디언트(기울기)를 효과적으로 전파시킬 수 있게 합니다. 기울기가 0이 되는 문제를 피할 수 있어서 학습이 더욱 잘 이루어질 수 있습니다.
- 모델의 표현력 향상:
- ReLU 함수를 사용하면 입력에 대해 선형적인 변환을 추가할 수 있습니다. 이는 모델의 표현력을 높이고, 복잡한 데이터의 특징을 더 잘 추출할 수 있게 도와줍니다.
- 희소성(sparsity):
- ReLU는 음수 입력에 대해 0을 출력하는 특성이 있습니다. 이로 인해 출력값이 희소하게 되는 경향이 있어서, 모델이 더 간결하고 효율적으로 학습할 수 있습니다.
- 출력 값의 범위: 출력층에서는 보통 원하는 출력 범위를 정확히 지정해야 합니다. 예를 들어, 분류 문제에서는 softmax 함수를 사용하여 각 클래스에 대한 확률값을 얻으며, 회귀 문제에서는 출력 범위에 맞는 활성화 함수를 사용합니다. 이를 위해 일반적으로 출력층에서는 ReLU보다는 다른 함수를 사용합니다.
- 활성화 함수 선택: 분류 문제에서는 보통 softmax 함수를 사용하여 다중 클래스 분류를 하고, 회귀 문제에서는 선형 활성화 함수를 사용하여 연속적인 값을 예측합니다. 이와 같은 함수들은 출력층에서 활성화 함수로 사용됩니다.
- 그레디언트 전파: 마지막 층에서는 종종 softmax와 같은 활성화 함수를 사용하여 출력을 정규화하고, 그레디언트를 잘 전파할 수 있도록 돕습니다. 이는 모델의 학습을 안정화시키고, 정확도를 개선하는 데 도움을 줄 수 있습니다.