인공신경망 : 인간의 뇌의 신경망을 모방하여 만든 머신러닝 알고리즘, 인공신경망은 여러 개의 연결된 노드(뉴런)로 구성되며, 이러한 노드는 입력을 받아 처리하고 결과를 출력. 각 노드는 일련의 가중치와 활성화 함수를 사용하여 입력 데이터에 대한 연산을 수행. 가중치는 입력 데이터에 곱해지는 값으로, 학습을 통해 최적화. 활성화 함수는 노드의 출력을 결정하는 비선형 함수로, 입력에 대한 비선형 변환을 수행.
인공신경망은 일반적으로 여러 층으로 구성된 신경망으로 사용. 입력층, 은닉층, 출력층으로 구성된 이러한 신경망을 다층 퍼셉트론(Multi-Layer Perceptron, MLP). 은닉층은 입력과 출력 사이에 있는 층으로, 입력 데이터를 비선형으로 변환하여 다양한 패턴을 학습. 이러한 신경망은 역전파(backpropagation)라는 학습 알고리즘을 사용하여 가중치를 조정하고 오차를 최소화.
생물학적 신경망과 다르다!
생물학적 신경망 : 생물학적 신경망은 생물학적인 뇌를 기반으로 했고 인공 신경망은 감정 등 다양한 생물학적 제약을 받지 않고 수학적 모델로 구성. 생물학적 신경망은 동적으로 학습 기억 적응 복구 등의 생물학적 기능도 수행. 또 단순한 패턴 인식에는 효과적이지만 복잡한 문제에선 더 고생하는 걸 보니 딱 인간같음, 반면 인공 신경망은 학습이 끝나면 그대로 사용, 새로운 입력에 적응이 어렵다.
인공신경망 구조
입력층 : 입략 데이터가 들어오는 부분
은닉층: 입력층과 은닉층 사이에 있는 층
출력층: 출력값을 내보내는 부분으로 노드는 출력값의 종류에 따라 달라진다(이진분류면 하나, 다중 분류면 여려개)
각 층의 노드(층) 사이에는 가중치와 바이어스를 가진다. 바이어스는 각 노드에 대한 편향값. 가중치는 입력신호에 곱해져서 다음 레이어로 전달되는 값인데 컴퓨터가 계산한다.
편향 : 뉴런의 입력에 더해지는 상수. 편향은 신경망에서 각 뉴런이 활성화될 기준을 조정하고, 비선형성을 추가하는 데 사용. 편향을 사용하는 이유는 인공 신경망의 표현 능력을 향상시키기 위해서이다.
편향은 각 뉴런의 입력에 더해지는 상수 값으로, 신경망의 출력을 결정하는 데 영향을 준다. 편향을 사용하지 않으면, 입력 데이터의 선형 변환만을 수행하는 신경망이 되어 제한된 표현 능력을 가질 수 있다. 하지만 편향을 추가함으로써, 신경망은 비선형성을 가지게 되고 다양한 패턴을 학습할 수 있다.
y = wx + b (w는 입력 x에 대한 가중치이고 b는 편향)
손실 함수(loss function): 모델의 출력과 실제 값 사이의 차이를 측정하는 함수. 주어진 입력에 대해 모델의 예측값과 실제값 간의 오차를 계산하여 모델의 성능을 평가하고 학습 과정에서 모델을 업데이트하는 데 사용.
일반적으로 회귀 문제에서는 평균 제곱 오차(Mean Squared Error, MSE) 또는 평균 절대 오차(Mean Absolute Error, MAE)와 같은 손실 함수가 사용. 손실 함수는 모델을 평가하고, 학습 중에 그라디언트(기울기)를 계산하여 모델의 가중치 및 편향을 업데이트하는 데 사용. 학습 과정에서 손실 함수의 값은 최소화되도록 모델 파라미터를 조정하고, 최적의 모델을 찾는 데 도움을 준다. 분류 문제의 경우, 예측값과 실제 라벨 간의 차이를 교차 엔트로피 손실(Cross Entropy Loss) 등을 사용하여 계산. 엔트로피 손실 함수에서 이진분류일 경우는 binary 교차 엔트로피 손실을 다중 분류에서는 categorical 교차 엔트로피 손실을 사용
-평균 제곱 오차
모델의 예측값과 실제값 사이의 차이의 제곱을 계산하고, 이들의 평균을 구하여 오차를 나타낸다. 커질수록 문제가 많은 것
-엔트로피 손실
분류 문제에서 사용되는 손실 함수로, 모델의 예측값의 엔트로피(불확실성)를 최소화하는 방향으로 학습을 진행
-힌지 손실 :
이진 분류 문제에서 사용되는 손실 함수로, 예측값과 실제 라벨 간의 차이를 일정한 마진(margin)으로 비교하여 오차를 계산하며, 예측값과 실제 라벨이 일치할 때 손실이 0이 된다. 주로 서포트 벡터 머신(Support Vector Machine)에서 사용
-L2손실
L2 손실은 모델의 예측값과 실제값 사이의 차이(오차)를 제곱한 후 평균을 구하는 방식으로 계산
활성 함수 : 인공 신경망의 각 뉴런에서 입력 신호의 가중치 합을 출력값으로 변환하는 함수
시그모이드 함수(=로지스틱 함수) : 입력값을 0과 1 사이의 연속적인 값으로 변환하는 활성 함수. 주로 이진 분류 문제에서 출력층의 활성 함수로 사용되거나, 로지스틱 회귀와 같은 모델에서 활성 함수로 사용
렐루 함수 : 입력값이 0보다 작을 때는 0을 출력하고, 0보다 큰 경우에는 입력값을 그대로 출력하는 함수
리키 렐루 함수 : 음수 범위에서도 0이외의 값을 묘하게 가질 수 있게됨
소프트맥스 : 입력값을 클래스 확률로 변환하는 함수. 주로 다중 클래스 분류 문제에서 출력층의 활성화 함수로 사용.
소프트맥스 함수는 입력 벡터의 각 요소를 [0, 1] 범위로 압축하고, 모든 요소의 합이 1이 되도록 정규화. 이를 통해 각 요소는 해당 클래스에 속할 확률로 해석
하이퍼볼릭 탄젠트 : 시그모이드 함수와 비슷하지만 출력 범위가 -1에서 1사이다.
역전파 : 역전파는 출력과 실제 값 사이의 오차를 역으로 전파하여 각 계층의 가중치를 조정하는 알고리즘
오차 역전파 : 인공 신경망에서 가중치와 편향을 학습시키기 위한 알고리즘 중 하나,
오차 역전파 알고리즘은 다음과 같은 단계로 이루어진다
1. 순전파: 주어진 입력에 대해 신경망의 순전파를 수행하여 출력을 계산
2. 오차 계산: 출력과 실제 값 사이의 오차를 계산
3. 역전파: 오차를 역으로 전파하여 각 계층의 가중치에 대한 기울기를 계산
4. 경사하강법: 계산된 기울기를 사용하여 가중치를 업데이트
위 단계를 반복하여 학습을 진행
출력 : 예측값이 나오는 구간.
머신러닝과 딥러닝
딥러닝은 머신러닝의 한 종류이고 머신 러닝은 인공 지능 분야에 속한다.
머신러닝은 데이터에서 패턴을 학습하여 예측 모델을 구축하는 반면, 딥러닝은 인공신경망을 사용하여 데이터로부터 자동으로 특징을 추출하고 예측 모델을 학습하는 것.
머신러닝은 초기에는 인간이 특징(feature)를 선택하고 모델의 구조와 하이퍼파라미터를 설정하는 등의 개입이 필요하지만, 학습이 진행되면서 모델 스스로가 데이터에서 패턴을 학습하여 최적의 예측 모델을 생성함. 따라서 머신러닝은 인간의 개입이 필요하지만, 딥러닝은 더 많은 부분을 인공신경망이 자동으로 처리하므로 인간의 개입이 상대적으로 적다고 볼 수 있다.
머신 러닝 과정에서 어떻게 패턴을 추출할지 정하는 것이 모델을 정한다고 표현
딥러닝에서는 신경망 구조를 고르는 것을 모델을 정한다 표현
딥러닝에서도 지도학습/비지도 학습이 존재한다(정답지의 유무)
지도학습에는 분류 또는 리그레션같은 주가 예측처럼 수치를 맞추는 게 있고
비지도 학습에는 클러스터링 같이 같은 그룹을 무리지어주는 것이 있다
분류는 이산적(독립된 의미)인 정답을 가지고 회귀는 연속성이 있다. 딥러닝에서는 이 신경망의 출력창을 이런걸 고려하고 설계해줘여 한다
단순 선형 회귀:
독립 변수 X와 이에 대응하는 종속 변수 Y의 선형적 관계를 모델링하는 회귀 분석 기법
다중 선형 회귀:
독립 변수가 여러개이고 이에 대응하는 종속변수는 하나
경사 하강법 :
최적화 알고리즘 중 하나로, 함수의 최솟값을 찾기 위해 사용. 주어진 함수의 기울기(경사)를 따라 내려가면서 최솟값을 찾는 방법.
경사 하강법은 언덕(손실함수의 그래프)을 내려가는 방법이라고 할 수 있다.하나의 큰 언덕 위에 서 있을 때, 가장 낮은 곳으로 내려가려면 어떻게 해야 할까? 네가 있는 위치에서 발을 내디뎌서 가장 가파르게 내려가는 방향으로 걸으면 된다. 그리고 조금씩 움직이면서 내려가면, 결국 언덕의 가장 아래 지점에 도달하게 될 것이다.
머신 러닝에서 경사 하강법은 이와 비슷한 원리로 작동한다. 찾고자 하는 목표는 함수의 최솟값이고, 그 함수는 언덕과 같다. 경사 하강법은 현재 위치에서 함수의 기울기를 계산하고, 가장 기울기가 큰 방향으로 조금씩 이동하면서 최솟값을 찾아가는 것이다. 이렇게 조금씩 이동하면서 최솟값에 점점 가까워질 수 있다.
그래서 경사 하강법은 머신 러닝에서 함수의 최솟값을 찾거나 모델을 최적화할 때 사용된다. 함수를 계속해서 평가하고 기울기를 이용해서 최적화를 수행하는 것. 이렇게 하면 모델이 더 잘 동작하게 되고, 예측도 정확해지게 될 것이다.
경사 하강법에서 사용되는 학습률(learning rate)와 반복횟수(iterations)
학습률 : 각 반복 단계에서 모델의 가중치를 업데이트하는 양을 조절
반복횟수 : 모델을 학습시키는 데 필요한 총 반복 횟수
경사 하강법의 종류
(1) 배치 경사 하강법은 경사 하강법의 한 종류로, 모든 학습 데이터를 한 번에 사용하여 가중치를 업데이트하는 방식
(2) 확률적 경사 하강법은 경사 하강법의 한 종류로, 각 학습 데이터마다 가중치를 업데이트하는 방식으로, 데이터 하나씩 처리하며 반복하여 가중치를 조정
(3) 미니배치 경사 하강법은 경사 하강법의 한 종류로, 일부 학습 데이터(미니배치)를 사용하여 가중치를 업데이트하는 방식으로, 배치 경사 하강법과 확률적 경사 하강법의 절충안, 보통은 이 방법을 사용!!!
경사 하강법에서 일어날 수 있는 문제점과 해결
지역 최솟값 문제: 경사 하강법은 최솟값을 찾는 것을 목표로 하지만, 복잡한 함수에서는 지역 최솟값에 갇힐 수 있다. 전역 최솟값을 찾는 것이 어려울 수 있다.
학습률 선택 문제: 학습률은 가중치 업데이트 양을 조절하는 역할을 한다. 너무 작은 학습률은 학습 속도를 늦출 수 있고, 너무 큰 학습률은 발산할 가능성이 있다. 적절한 학습률을 선택하는 것이 중요하다.
특성 스케일 문제: 입력 특성의 스케일이 크게 다르면 경사 하강법이 수렴하는 데 어려움을 겪을 수 있다. 스케일이 큰 특성이 작은 특성에 비해 지배적인 역할을 할 수 있다. 이를 해결하기 위해 입력 데이터를 정규화하는 전처리 단계가 필요할 수 있다.
과적합 문제: 학습 데이터에 지나치게 맞춰진 모델은 새로운 데이터에 대해 일반화하기 어렵다. 이를 과적합이라고 한다. 적절한 정규화 기법(예: 규제)을 적용하여 과적합을 줄이는 것이 중요하다. -> 데이터 더 수집
수렴 속도 문제: 경사 하강법은 일정한 반복 횟수 이후에 수렴하게 된다. 수렴 속도가 느리거나 수렴하지 않을 수도 있다. 이를 해결하기 위해 학습률 조정, 초기 가중치 설정 등을 변경하여 수렴을 개선할 수 있다.
회귀 평가 지표
평균 제곱 오차(Mean Squared Error, MSE): 예측 값과 실제 값 사이의 평균 제곱 오차를 계산. 오차를 제곱하여 계산하므로 오차의 크기에 따른 가중치를 부여. MSE가 작을수록 모델의 예측이 실제 값에 더 가깝다고 할 수 있음.
평균 절대 오차(Mean Absolute Error, MAE): 예측 값과 실제 값 사이의 평균 절대 오차를 계산. 오차의 절댓값을 계산하므로, 실제 오차의 크기에 대한 가중치를 부여하지 않음. MAE가 작을수록 모델의 예측이 실제 값에 더 가깝다고 할 수 있다.
평균 제곱근 오차(Root Mean Squared Error, RMSE): MSE의 제곱근을 계산한 값으로, 예측 값과 실제 값 사이의 평균 제곱근 오차를 나타낸다. 오차의 크기에 대한 가중치를 부여하고, MSE와 단위가 동일. RMSE가 작을수록 모델의 예측이 실제 값에 더 가깝다고 할 수 있다.
뉴럴 네트워크 플레이 그라운드>
인공신경망 구조에 대해 공부하기 좋다
예시>