2024. 3. 14. 20:24ㆍMOOC
1. 뉴런
- 인공 뉴런: 신경망의 기본 단위로, 뇌의 뉴런에서 영감을 받았다. 각 뉴런은 여러 입력을 받아 하나의 출력을 생성한다.
- 입력과 가중치: 각 입력에는 가중치(weight)가 곱해지며, 이는 입력의 중요도를 나타낸다. 가중치는 학습 과정에서 조정된다.
- 활성화 함수: 뉴런의 출력을 결정하는 함수로, 비선형성을 도입해 신경망이 복잡한 문제를 해결할 수 있도록 한다.
※각 입력에 가중치가 곱해진다
: 신경망의 각 뉴런은 여러 입력을 받아들이고, 각 입력에는 특정 가중치(weight)가 할당된다. 이후, 입력된 값과 가중치 의 곱의 합이 활성화 함수를 통해 처리되어 출력한다.
※가중치에 대한 예시
입력 요소:
- 가격: 집의 가격.
- 위치: 집의 위치, 예를 들어 도심 근처 또는 교외.
- 크기: 집의 크기 또는 방의 개수.
- 교통 편의성: 대중교통 접근성이나 주차 공간의 편리함.
가중치 예시:
- 가격에 대한 가중치가 높다: 예산이 제한적이어서 가격을 가장 중요한 요소로 고려
- 위치에 대한 가중치가 높다: 출퇴근의 용이성이나 학군 때문에 위치를 가장 중요시
- 크기에 대한 가중치가 높다: 가족 크기나 개인적인 공간 요구로 인해 집의 크기를 중요
- 교통 편의성에 대한 가중치가 높다: 자동차 없이 생활하거나, 주차 공간에 대한 요구가 높아 교통 편의성을 우선
결정 과정:
이제 이러한 요소들을 바탕으로 집을 구매하는 결정을 내리려고 한다. 각 요소는 집을 구매하는 결정에 영향을 미치는 입력 변수가 되며, 개인의 선호에 따라 각 요소에 부여되는 가중치가 다르다. 예를 들어, 어떤 사람은 가격(가중치: 0.5)을 가장 중요하게 여길 수 있고, 다른 요소들은 상대적으로 낮은 가중치(위치: 0.2, 크기: 0.2, 교통 편의성: 0.1)를 가진다. 이러한 가중치는 각 요소가 최종 결정(집을 구매할지 여부)에 미치는 상대적 중요도를 반영한다.
2.가중치의 역할
- 정보의 중요도 조정: 가중치는 해당 입력의 중요도를 조절하는 역할을 한다. 높은 가중치는 해당 입력이 뉴런의 최종 출력에 큰 영향을 미친다는 것을 의미하고, 낮은 가중치는 그 반대를 의미한다.
- 신호 조절: 가중치는 입력 신호를 증폭하거나 감소시킨다. 양수 가중치는 입력 신호를 증폭시키는 반면, 음수 가중치는 입력 신호의 방향을 바꾸어 반대의 효과를 낼 수 있다.
3.작동 원리
신경망에서 뉴런의 입력과 출력 관계는 일반적으로 다음과 같은 과정을 따른다:
- 입력과 가중치의 곱: 뉴런으로 들어오는 각 입력값 에는고유한 가중치가 곱해진다. 이 과정을 모든 입력에대해 수행한다.
- 가중합 계산: 각 입력값과 가중치의 곱을 모두 더해 하나의 값을 얻는다. 이를 가중합(weighted sum)이라고 한다.
- 편향 추가 (선택적): 가중합에 편향(bias)라고 하는 고정된 값을 추가하기도 한다. 편향은 뉴런이 활성화되기 위한 임계값을 조정하는 역할을 한다.
- 활성화 함수 처리: 최종적으로 얻어진 가중합(및 편향이 추가된 경우 그 합)을 활성화 함수(activation function)에 통과시킨다. 이 함수는 최종 출력값을 결정하며, 비선형성을 도입하여 모델이 복잡한 문제를 해결할 수 있게 한다.
※활성화 함수란?
활성화 함수(Activation Function)는 인공 신경망에서 중요한 역할을 하는 비선형 함수이다. 이 함수는 신경망의 각 노드(뉴런)에 적용되어, 노드로부터의 출력값을 결정짓는다. 활성화 함수는 신경망이 복잡한 문제를 해결할 수 있게 하며, 비선형성을 도입함으로써 모델이 선형이 아닌 데이터 패턴을 학습하고 표현할 수 있게한다
주요 활성화 함수
- 시그모이드(Sigmoid): 출력을 0과 1 사이로 제한한다. 이진 분류 문제에서 출력 레이어에 자주 사용된다.
- 하이퍼볼릭 탄젠트(Tanh): 출력을 -1과 1 사이로 조정한다. 중심이 0이기 때문에 종종 은닉층에서 사용된다.
- ReLU(Rectified Linear Unit): 음수 입력에 대해서는 0을 출력하고, 양수 입력에 대해서는 입력값을 그대로 출력한다. 간단하면서도 효율적이어서 많은 모델에서 은닉층의 활성화 함수로 널리 사용된다.
- Leaky ReLU: ReLU의 변형으로, 음수 입력에 대해서도 매우 작은 기울기를 갖는다. 이를 통해 ReLU에서 발생할 수 있는 "죽은 뉴런" 문제를 해결한다.
- 소프트맥스(Softmax): 다중 클래스 분류 문제에서 출력층에 사용된다. 각 클래스에 대한 확률 분포를 출력한다.
예시
1. 시그모이드 함수 (Sigmoid)
- 특징: 출력 범위가 0과 1 사이이며, 이는 확률을 나타내기에 적합하다. 주로 이진 분류 문제의 출력층에 사용된다.
- 예시: 이메일이 스팸인지 아닌지를 판별하는 이진 분류 문제에서, 마지막 출력층의 활성화 함수로 사용하여, 이메일이 스팸일 확률을 0과 1 사이의 값으로 출력한다.
2. 하이퍼볼릭 탄젠트 함수 (Tanh)
- 특징: 출력 범위가 -1과 1 사이로, 시그모이드 함수보다 평균이 0에 가깝기 때문에 학습 초기 단계에서 더 빠른 수렴을 보일 수 있다.
- 예시: 시퀀스 데이터를 처리하는 RNN(Recurrent Neural Network)의 은닉층에서, 각 시간 단계의 출력을 결정하는 데 사용된다.
3. ReLU (Rectified Linear Unit)
- 특징: 음수를 입력받으면 0을 출력하고, 양수는 그대로 출력한다. 계산 효율성이 높고, 그래디언트 소실 문제를 어느 정도 해결해준다.
- 예시: CNN(Convolutional Neural Network)이나 일반적인 DNN(Deep Neural Network)의 은닉층에 널리 사용되어, 이미지 인식이나 분류 작업에 적합하다.
4. Leaky ReLU
- 특징: ReLU와 유사하지만, 음수 입력에 대해 아주 작은 기울기를 부여하여 "죽은 뉴런" 문제를 완화한다.
- 예시: GAN(Generative Adversarial Networks)에서 생성자와 판별자 모델의 은닉층에서 사용되어, 모델이 더 안정적으로 학습할 수 있게 돕는다.
5. 소프트맥스 (Softmax)
- 특징: 출력층에서 사용되며, 클래스에 대한 확률 분포를 출력한다. 다중 클래스 분류 문제에 적합하다.
- 예시: 손글씨 숫자를 인식하는 MNIST 분류 문제에서, 10개 클래스(0부터 9까지의 숫자) 각각에 대한 확률을 출력하기 위해 사용된다.
4. 학습 알고리즘
지도 학습 (Supervised Learning)
지도 학습에서, 모델은 입력과 그에 해당하는 출력(레이블) 쌍의 데이터 세트를 사용하여 학습한다. 목표는 새로운, 미지의 데이터에 대해 정확한 예측을 하는 것이다. 지도 학습 알고리즘에는 다음과 같은 것들이 포함된다:
- 선형 회귀 (Linear Regression): 연속적인 값을 예측하는데 사용된다.
- 로지스틱 회귀 (Logistic Regression): 분류 문제(이진 또는 다중 클래스)를 해결하는데 사용된다.
- 결정 트리 (Decision Trees), 랜덤 포레스트 (Random Forests): 분류 및 회귀 문제에 사용된다.
- 신경망 (Neural Networks): 복잡한 데이터 구조를 모델링하는데 사용된다.
비지도 학습 (Unsupervised Learning)
비지도 학습에서, 모델은 레이블이 없는 데이터로부터 패턴이나 구조를 학습한다. 이 방식은 데이터의 숨겨진 특성을 발견하거나 그룹화하는데 주로 사용된다:
- 클러스터링 (Clustering): 비슷한 특성을 가진 데이터 포인트들을 그룹화한다.
- 차원 축소 (Dimensionality Reduction): 데이터의 특성을 줄이면서 중요한 정보를 유지하는데 사용된다.
강화 학습 (Reinforcement Learning)
강화 학습에서, 에이전트는 환경과 상호작용하며, 주어진 목표를 달성하기 위해 최적의 행동 전략을 학습한다. 보상(또는 벌점) 시스템을 통해, 에이전트는 시간이 지남에 따라 최적의 행동을 결정하는 방법을 배운다.
학습 알고리즘의 핵심 요소
- 손실 함수 (Loss Function): 모델의 예측이 실제 값과 얼마나 다른지 측정한다. 학습의 목표는 이 손실 함수의 값을 최소화하는 것이다.
- 최적화 알고리즘 (Optimization Algorithm): 가장 일반적으로 사용되는 최적화 알고리즘은 경사 하강법(Gradient Descent)이다. 이 방법은 손실 함수의 최소값을 찾기 위해 모델의 매개변수를 조절한다.
강화 학습의 간단한 정책 신경망을 구현하고, 환경과 상호작용하여 학습하는 과정
import torch
import torch.nn as nn
import torch.optim as optim
class PolicyNetwork(nn.Module):
def __init__(self):
super(PolicyNetwork, self).__init__()
self.fc = nn.Linear(4, 2) # 간단한 예제: 입력 차원 4, 출력 차원 2
def forward(self, x):
return torch.softmax(self.fc(x), dim=-1)
# 환경과 상호작용하는 예제 함수
def interact_with_environment():
# 임시로 랜덤한 상태를 반환하도록 설정
return torch.rand(4)
# 네트워크 및 옵티마이저 초기화
policy_network = PolicyNetwork()
optimizer = optim.Adam(policy_network.parameters(), lr=0.01)
# 에이전트 학습 루프
for episode in range(1000):
state = interact_with_environment() # 환경으로부터 상태 얻기
state_tensor = torch.FloatTensor(state).unsqueeze(0) # 텐서로 변환
action_probs = policy_network(state_tensor) # 행동 확률 계산'MOOC' 카테고리의 다른 글
| [Deep Learning 1] PyTorch Background (0) | 2024.04.04 |
|---|---|
| Scikit-Learn의 문서 전처리 기능 (데이터 사이언스 5) (1) | 2024.03.21 |
| NLTK 자연어 처리 패키지 (데이터 사이언스 4) (0) | 2024.03.13 |
| 2.1 데이터 전처리 기초 학습 (데이터 사이언스 2) (2) | 2024.03.13 |
| 2.2 범주형 데이터 처리 학습 (데이터 사이언스 3) (3) | 2024.03.12 |