소프트맥스(softmax) 다중 클래스 분류 문제에서 사용되는 활성화 함수. 주어진 입력값을 클래스에 대한 확률로 변환하는 역할. 소프트맥스 함수는 입력값을 0과 1 사이의 확률값으로 변환하고, 모든 클래스에 대한 확률의 합은 1이 되도록 조정

 

소프트맥스 회귀(softmax regression) 로지스틱 회귀를 다중 클래스 분류 문제로 확장한 알고리즘. 로지스틱 회귀가 이진 분류에 사용되는 것과 달리, 소프트맥스 회귀는 다중 클래스 분류에 적용

 


 

소프트맥스 회귀응용 분야

1. 이미지 분류: 소프트맥스 회귀는 이미지에 대한 다중 클래스 분류에 적용. 예를 들어, 소프트맥스 회귀를 사용하여 손글씨 숫자 인식, 동물 종류 분류 등의 문제를 해결.

2. 자연어 처리: 소프트맥스 회귀는 텍스트 분류나 감성 분석과 같은 자연어 처리 문제에서 사용. 예를 들어, 문장이 어떤 주제에 속하는지 분류하거나 긍정/부정 감성을 분석하는 등의 작업에 적용.

3. 음성 인식: 소프트맥스 회귀는 음성 인식 문제에서 사용. 음성 데이터를 특정 카테고리(단어, 명령 등)로 분류하는 작업에 소프트맥스 회귀를 적용하여 모델을 학습.

4. 추천 시스템: 소프트맥스 회귀는 추천 시스템에서 사용. 예를 들어, 사용자의 특성과 아이템의 특성을 고려하여 어떤 아이템을 추천할지 결정하는 문제에 소프트맥스 회귀를 적용.

 


 

소프트맥스 회귀의 한계: 선형 분리 가능한 문제에 적합하고 클래스 불균형 문제와 고차원 데이터에 취약하며 클래스 간 상관관계를 고려하지 않음. 

 

개선방안: 클래스 불균형 문제를 해결하기 위해 가중치 조정 및 샘플링 기법 적용, 비선형 문제에 대한 적응력을 높이기 위해 다중 계층 신경망 적용, 클래스 간 상관관계 고려를 위해 다른 분류 알고리즘과 결합하여 앙상블 모델 구축.

 

 

'machine_learning > Deep_learning' 카테고리의 다른 글

선형 분류와 선형 회귀  (0) 2023.06.27
인공신경망 - 옵티마이저  (0) 2023.06.26
인공신경망 - 기초  (0) 2023.06.26

선형 분류 vs 선형 회귀

선형 회귀는 연속 변수를 예측하는 데 사용되는 선형 모델
선형 분류는 범주형 변수를 분류하는 데 사용되는 선형 모델


대표적인  선형분류 알고리즘

로지스틱 회귀(Logistic Regression): 선형 회귀를 이용하여 이진 분류를 수행. 로지스틱 함수를 사용하여 확률을 계산하고, 이를 기반으로 클래스를 예측. 시그모이드 함수를 사용, 로그손실 함수 사용

서포트 벡터 머신(Support Vector Machines, SVM): 선형 분류 문제에서 가장 잘 알려진 알고리즘. 데이터를 고차원 공간으로 매핑하여 선형으로 분리할 수 있는 최적의 경계를 찾는다.

선형 판별 분석(Linear Discriminant Analysis, LDA): 주어진 클래스의 평균과 공분산을 기반으로 선형 결정 경계를 찾는 알고리즘. 클래스 간 분산이 최대화되고 클래스 내 분산이 최소화되도록 결정 경계를 결정.

퍼셉트론(Perceptron): 초기 머신 러닝 알고리즘 중 하나로, 선형 분류를 위한 이진 분류기. 오분류된 샘플에 대해 경사 하강법을 사용하여 가중치를 조정하여 학습.

 

선형 결정 경계

 선형 분류 모델에서 데이터를 나누는 직선 또는 초평면, 이 경계선은 데이터를 클래스별로 분리하는 역할을 하며, 분류 모델의 예측 결과를 결정하는 기준

 

결정 경계  분류 모델에서 클래스를 나누는 경계를 의미, 학습된 분류 모델의 파라미터와 특성의 조합에 따라 결정


 

 

 

'machine_learning > Deep_learning' 카테고리의 다른 글

소프트맥스 회귀  (0) 2023.06.27
인공신경망 - 옵티마이저  (0) 2023.06.26
인공신경망 - 기초  (0) 2023.06.26

옵티마이저 :  모델이 학습 데이터로부터 학습하며 최적의 파라미터를 찾아내는 과정에서 옵티마이저는 손실 함수(loss function)를 최소화하는 파라미터 값을 조정. 이를 통해 모델이 더 나은 예측을 수행할 수 있도록 돕는다.

다양한 종류의 옵티마이저가 있으며, 각각의 옵티마이저는 다른 방식으로 파라미터를 업데이트한다. 

 



확률적 경사 하강법(Stochastic Gradient Descent, SGD): 여러 샘플 중 하나 픽해서 손실 계산하여 업데이트, 일반적으로 대규모 데이터셋에서 사용

 

장점:
구현이 간단하고 계산 비용이 적다.
대규모 데이터셋에 적용하기에 유리


단점:
수렴 속도가 상대적으로 느릴 수 있다.
노이즈가 있는 데이터에서 수렴이 어려울 수 있다.

 

Mini-batch Gradient Descent : 학습 데이터를 작은 배치(mini-batch) 단위로 나누어 파라미터를 업데이트하는 방식. 전체 학습 데이터를 사용하는 배치 경사 하강법보다 빠른 계산 속도와 일정한 수준의 노이즈를 가지면서도 안정적인 업데이트를 제공합니다.


모멘텀 최적화(Momentum Optimization): 이전 업데이트에서의 관성을 사용하여 현재 기울기와 함께 업데이트에 영향을 준다. 이를 통해 이동 방향이 일정하게 유지되어 지역 최솟값에 빠지지 않고 전역 최솟값을 탐색할 수 있다.


장점:
이전 그래디언트의 영향을 고려하여 빠르게 수렴할 수 있다.
로컬 최솟값에서 빠져나오는 데 도움이 된다.


단점:
골짜기를 넘어서는 경우에는 속도가 빨라져 수렴이 어려울 수 있다.



아다그라드(Adagrad): 각 파라미터마다 학습 속도를 조정하여 자주 업데이트되는 파라미터에는 더 작은 학습 속도를 적용. 이는 기울기가 크게 갱신되는 파라미터를 더 작은 학습 속도로 업데이트하여 효과적인 학습을 돕는다.

 

장점:
매개변수별로 학습률을 조정하여 효율적인 학습을 가능하게 한다.
희소한 그래디언트에 대해서도 잘 동작한다.


단점:
학습률이 너무 감소하여 일찍 멈출 수 있다.
학습률 조정에 대한 자동화가 필요하다.


RMS프롭(RMSprop): 아다그라드의 단점인 학습 속도가 급격히 줄어드는 문제를 해결하기 위해 제안된 알고리즘으로, 최근 기울기를 크게 반영하여 학습 속도를 조절.

 

장점:
과거 그래디언트의 지수적 평균을 사용하여 학습률을 조정하여 안정적인 학습을 가능하게 하다.
학습률 감소 문제를 완화한다.


단점:
학습률이 여전히 너무 빨리 감소할 수 있다.

아담(Adam): 모멘텀 최적화와 RMS프롭을 결합한 알고리즘으로, 자유롭게 파라미터를 업데이트하고 속도를 조절하는 데에 효과적. 

 

모멘텀 최적화와 RMSprop의 장점을 결합하여 안정적이고 빠른 수렴을 가능하게 한다.
학습률의 조정을 자동화하고 효율적으로 수렴한다.


단점:
하이퍼파라미터에 민감할 수 있다


대부분 아담을 많이 사용

 

'machine_learning > Deep_learning' 카테고리의 다른 글

소프트맥스 회귀  (0) 2023.06.27
선형 분류와 선형 회귀  (0) 2023.06.27
인공신경망 - 기초  (0) 2023.06.26

인공신경망 : 인간의 뇌의 신경망을 모방하여 만든 머신러닝 알고리즘, 인공신경망은 여러 개의 연결된 노드(뉴런)로 구성되며, 이러한 노드는 입력을 받아 처리하고 결과를 출력. 각 노드는 일련의 가중치와 활성화 함수를 사용하여 입력 데이터에 대한 연산을 수행. 가중치는 입력 데이터에 곱해지는 값으로, 학습을 통해 최적화. 활성화 함수는 노드의 출력을 결정하는 비선형 함수로, 입력에 대한 비선형 변환을 수행.

인공신경망은 일반적으로 여러 층으로 구성된 신경망으로 사용. 입력층, 은닉층, 출력층으로 구성된 이러한 신경망을 다층 퍼셉트론(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가 작을수록 모델의 예측이 실제 값에 더 가깝다고 할 수 있다.

 


 

 뉴럴 네트워크 플레이 그라운드>

인공신경망 구조에 대해 공부하기 좋다

 

 

 

예시>

'machine_learning > Deep_learning' 카테고리의 다른 글

소프트맥스 회귀  (0) 2023.06.27
선형 분류와 선형 회귀  (0) 2023.06.27
인공신경망 - 옵티마이저  (0) 2023.06.26

+ Recent posts