본문 바로가기

Hello MLop/DL

MLop_DL_Deep Learnig

20221117

30일차

 


드디어 코딩을 배우기 전부터 자주 들었던 딥러닝의 세계에 입문했다.

이번 포스팅은 딥러닝이란 무었인지,  각 용어는 무었을 뜻하는지 보겠다.

 

 

💡딥러닝(Deep Learning)?

 

사람의 사고방식컴퓨터에게 가르치는 기계학습의 한 분야

 

인간이 에서 사용하는 뉴런(신경세포)과 같은 알고리즘으로 머신러닝의 하위분야  

 

 


인공 신경망 ANN(Artificial Neural Network)

 

위의 설명과 같이 딥러닝은 인간이 에서 사용하는 뉴런에서 영감을 얻은 통계학적 학습 알고리즘

다시말해 뇌세포 뉴런수학적으로 표현한 알고리즘이다.

 

 

 

 

 

인공 뉴런(퍼셉트론) ⭐⭐⭐⭐⭐ # aka.인공 신경망, 인공뉴런

 

입력값가중치, 편향을 이용해 출력값을 내는 수학적 모델

 퍼셉트론을 이용해 만든 모든 구조물을 인공 신경망이라고 부른다.

퍼셉트론을 하나 사용하면 단층 신경망, 퍼셉트론을 여러개 사용하면 다층 신경망

 

✨ keyword

다층 신경망, 인공 신경망의 학습 방법, 손실 함수, 경사 하강법과 오차 역전파, 신경망 성능 비교, 기울기 소실 예방

 

 

 

 

퍼셉트론의 기본 형태

 

 

변수 인덱스

 

x1, x2 = 입력값

w1, w2 = 가중치

b = 편향

F = 활성화 함수

y = 출력값 (1 또는 0)

 

y = F(x1w1 + x2w2 + b)

 


입력층 : 입력값을 받아들이는 층


노드(인공뉴런) : 입력값의 가중합활성화를 결정하는 층

 

 

💡 가중합 : 입력값 + 가중치 + 편향

 

 

💡 활성화 함수 : 뉴런의 출력을 다음 뉴런으로 넘길지를 결정하는 함수

임계값을 기준으로 노드의 출력값을 결정하는 함수, 활성화 함수로 인해 층을 쌓는 효과가 생김

대표예시) 시그모이드 함수

 

 

💡 시그모이드 함수 :  0.5의 기본 임계값을 기준으로 활성화 함수의 값이 0.5보다 크면 1 작으면 0으로 보냄

 

💡 편향 : 가중치를 받은 입력값을 가진 뉴런이 활성화 함수에 오기전 다음 뉴런으로 전달 할때

경계를 얼마만큼 이동할 것이냐 정해주는 것

 

쉽게 설명하면 다음 뉴런으로 전달하냐 마냐할때 갖는 어떤 방향성이다.

 

 

💡 결정경계 : 신경망의 출력이라고 불림, 가중합을 입력데이터 # ex) x1,x2 를 축으로 봤을때의 그래프

퍼셉트론의 출력은 결정경계다.

 

하나의 결정경계로 데이터를 분류할 수 없다.

그래서 2개이상의 결정경계로 데이터를 분류한다

그게 다층 신경망이다.

 

 


 

출력층 : 퍼셉트론의 출력값을 나타내는 층

 

 

💡 손실 함수 : 정답신경망의 예측의 차이를 나타내는 함수    # 손실 = 오차 = Error

 ▶ 머신러닝에서 오차를 정의한 함수

 

⭐ 여러 결정경계중 가장 좋은 결정경계를 구해보자! 

# Why 예측의 오차를 줄여보자! 

 

💡 MSE

 

💡 RMSE

 

💡 CrossEntropy

실제 분포q에 대하여 알지 못하는 상태에서, 모델링을 통하여 구한 분포인p를 통하여  q를 예측  

 


 

❗  손실 함수의 값(=오차)최소화 하는 방법

 

 

 

💡 경사하강법(Gradientdescent) ⭐⭐⭐⭐⭐

 

손실(오차)을 줄이는 방향으로 가중치를 변경하기 위해 사용하는 알고리즘

 

 함수의 기울기(경사)를 구하고 경사의 반대 방향으로 계속 이동시켜 최솟값에 이르게 반복해서 학습시킴

 

 시작점과 다음지점간의 거리를 보폭이라고 함

 

위의 빨간 그래프는 손실(오차)을 그래프로 표현한 손실함수 그래프이다.

즉, 오차를 최대로 줄이려면 위 그래프의 최솟값m으로 오차를 보내야한다.(=학습시켜야 한다)

 

그렇다면 보내는 방법이 뭘까?

 

그게 바로 기울기(Gradient)를 이용하는 것이다. 직선의 기울기가 -(음의 기울기)이면 아래쪽을 향하는 점을 고려해

 

위 손실 함수 그래프에 찍혀있는 수많은 오차들을 결국엔 최솟값방향(m)으로 기울기를 줘서 보내는것(=학습시키는것)을

경사 하강법이라고 한다.

 

💡 오차역전파 (Error Backpropagation)

 

 

앞에서 본 내용대로라면 입력값은닉층 속에서 가중치를 받는다.

그리고 최종 결과값에 은닉층에서 몇개의 가중치를 받았는지는 모르지만

결과값(입력값 + 가중치 + 편향)이 나온다.

 

그럼 이런 생각을 할 수 있다.

<최고의 모델>은 입력값이 최고의 결과를 만들기 위해 최적의(오차가 적은) 가중치를 받아 편향값과 함께

최고의 결과값이 되는것이다.

 

하지만 은닉층블랙박스 이기 때문에가중치가 어떻게 더해졌는지 우리는 알기 힘들다.

 

그래서 반대로 가면서 가중치들을 까보면서 오차를 줄일 수 있는 가중치로 학습시키는 방식오차역전파이다.

 

 


💡 오차 역전파기울기 소실 문제

 

우리가 위에서 본 활성화 함수, 시그모이드 함수는 오차를 역전할때 미분이 되는데

아래가 그 미분된 시그모이드 함수 그래프이다.

미분한 시그모이드 함수최대 값0.25인데

만약 오차역전파를 실행해서 마지막 활성화 함수 부터 처음 활성화 함수까지 간다면

최대 값은 0으로 갈것이다.

 

이를 기울기 소실 문제라고 한다.

 

 

 

💡 기울기 소실 문제대안

 

ReLu(렐루) : 0보다 작은 값은 0으로, 0보다 크거나 같은 값은 입력값을 그대로 출력하는 함수,주로 은닉층 활성화에 이용

 

소프트 맥스 : k개의 숫자를 입력받아 k개의 요소를 갖는 확률 분포로 변환하는 함수.

여러 클래스에 속할 확률을 나타내므로 다중분류에 사용

 

 

 

 

 

'Hello MLop > DL' 카테고리의 다른 글

MLop_DL_ResNet 실습  (0) 2022.12.04
MLop_DL_CNN 실습  (0) 2022.11.30
MLop_DL_손글씨 판단 예측  (0) 2022.11.24
MLop_DL_보스톤 집값 예측  (0) 2022.11.23
MLop_DL_사인함수 예측하기  (0) 2022.11.22