반응형

정어리회무침 예전 공무원을 준비하며 봤던 영상이 몇년이 지나고 딥러닝 공부하는데 문득 느껴짐 

https://youtu.be/SahDBTQX_Nk?si=4BvkK1T8kSnkXCSg

 

오늘 주제는 “딥러닝”

근데 신기하게도 지금 까지 쓴 글들,, 다 읽은 사람 손

공통점을 하나 찾을 수 있는데요

전부 개요에 정의, 기본만 설명하고 run,, 해버리기에

이번 딥러닝은 전체적인 개념 통합본으로 가보려구요.

이제 본론이긴 한데

갑자기 노래 추천하고 싶어짐.

공부에 좋은 노래들 밥상에 올려놓고 시자쿠

내 맴임

 

출처: 스마트인재개발원 손지영 연구원

PPT 감사합니다

먼저 노션 링크

일단 딥러닝이기 전에 머신러닝에 대해 설명을 적자면

머신러닝 - 기계가 학습한다

  • 컴퓨터가 스스로 학습하여 예측하고 판단하는 것
  • 수치데이터, 2차원 형태의 데이터(테이블 데이터) 딥러닝 - 인간의 신경망을 본떠서 만든 학습하는 방법
  • 수치데이터, 2차원 형태의 데이터, 사진/영상데이터, 음성데이터, 시계열 데이터

(1) 지도학습: 문제데이터 + 답데이터 학습시키는 방법

분류: 여러 classlabel로 정리된 답 중 1개를 판단하는 것. iris(0, 1, 2), titanic(0, 1)

회귀: 연속적인 수치 값을 예측하는 것성적 데이터 예측, 집 값 예측, 미세먼지 지수 예측, % 개념 예측

(2) 비지도학습: 문제 데이터를 가지고 그 안의 패턴과 규칙을 학습하게 하는 방법

비슷한 특징을 가진 데이터 포인터들끼리 묶는 (군집화, clustering) 함.차원 축소

(3) 강화학습: 행위의 주체자가 환경에 대해 행동하면서, 보상/패널티를 받으며 행동을 강화해 나가는 것

로봇에 대해서 학습시킬 때

딥러닝

병렬적 다층 구조를 통해 학습하도록 하는 기술

감각기(입력층) ⇒ 중간층 ⇒ 출력층(반응기; 예측 판단 가능)

많은 뉴런의 결과를 종합하여 판단을 한다.

딥러닝의 일반적인 구조는 입력층, 중간층, 출력층임

안에 뉴런하나들을 선형모델로 쓰더라(전부다 그런건 아닐듯?)

얼굴/객체 인식 마스크 착용 인식(시각지능)

이미지처리하는 부분을 전문적인 용어로 컴퓨터 비전이라고 함.

출처: 인공지능사관학교의 선생님

Tensorflow안의 Keras를 사용

Keras는 다양한 뉴럴 네트워크 모델을 미리 지원. 그냥 블록조립하듯이 네트워크를 만들면 되는 식. 전반적인 네트워크 구조를 생각하고 작성한다면 빠른 시간 내에 코딩을 할 수 있음. tensorflow 위에서 keras가 동작. keras를 tensorflow안에 포함시켜 표준 라이브러리로 지원하고 있음.

퍼셉트론(Perceptron)

퍼셉트론은 딥러닝의 기초가 되는 알고리즘 중 하나. 인공신경망의 한 종류

다수의 입력 신호를 받아 하나의 출력 신호를 만들어냅니다.

입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해집니다.

이 가중치는 각 신호가 결과에 주는 영향력을 조절하는 요소로 작용합니다.

뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력하고, 그렇지 않을 때는 0을 출력합니다. 이를 '뉴런 활성화'라고 합니다.

퍼셉트론의 간단한 구조와 작동 방식은 아래 그림과 같습니다.

활성화 함수(Activation Function)

딥러닝에서는 활성화 함수를 사용하여 신경망의 복잡한 비선형성을 학습합니다. 활성화 함수는 입력값을 받아 출력값을 계산하는 함수로, 신경망에서는 주로 비선형 함수를 사용합니다.

비선형 함수

선형 함수는 입력값에 비례하여 출력값이 증가하거나 감소하는 함수입니다. 딥러닝에서는 비선형 함수인 활성화 함수를 사용하여 신경망이 복잡한 비선형성을 학습할 수 있습니다.

활성화 함수의 종류

Sigmoid 함수

Sigmoid 함수는 입력값을 받아 0과 1 사이의 값을 출력합니다. 이 함수는 과거에는 널리 사용되었지만, 출력값이 0 또는 1에 가까워지면 기울기가 매우 작아지기 때문에 학습이 느려지고, 기울기 소실 문제가 발생할 수 있습니다.

ReLU 함수

ReLU(Rectified Linear Unit) 함수는 입력값이 0보다 작으면 0을, 0보다 크면 입력값을 그대로 출력합니다. 이 함수는 학습이 빠르고, 구현이 간단하여 현재 가장 많이 사용되는 활성화 함수 중 하나입니다.

Softmax 함수

Softmax 함수는 입력값을 받아 각 클래스에 대한 확률 벡터를 출력합니다. 이 함수는 다중 클래스 분류 문제에서 출력값을 확률값으로 해석할 수 있으므로, 분류 문제에서 널리 사용됩니다.

Tanh 함수

Tanh 함수는 Sigmoid 함수와 유사하지만, 출력값의 범위가 -1과 1 사이이므로, 입력값이 0에 가까울 수록 기울기가 커지고, 학습이 빨라지는 특징이 있습니다.

중간층에서는 값을 바꿔주는 활성화를 쓰는게 낫지 않을까 해서 계단함수 *등장*

이렇게 분류를 위해 비선형 함수인 Sigmoid가 등장

비선형 함수가 뭐냐? 비.선.형

말 그대로 선이 아니라는 거. 그래서 만약 활성화 함수(activation)로 선형함수(linear)를 쓰면 중간층을 여러 개 구성한 효과를 살릴 수 없다는 거


오차 역전파

말이 ㅈㄴ 어려운데. 오차를 000 한다는 것

순전파: 입력 데이터를 입력층에서부터 출력층까지 정방향으로 이동시키며 출력 값을 추론하는 것

역전파: 출력층에서 발생한 에러를 입력층 쪽으로 전파시키면서 최적의 결과를 학습해 나가는 것

(그니까 출력 나왔는데, 다시 돌아간다 - 역전파, 그리고 다시 공부(계산)해서 나온다는 것)

순정파 과정을 거친 (추론과 예측) 값이 나왔 때

'실제와 얼마나 차이가 나느냐.' 해서 다시 optimizer와 오차를 줄일 수 있게 다시 돌아가는 걸 역전파라고 보면 됨.

이 두 개의 과정을 나눈 건 예측하고 학습하는 과정. w와 b를 새롭게 갱신해 나가는 과정이라고 보면 됨

기울기 소실 문제(Vanishing Gradient)

딥러닝에서는 역전파 알고리즘을 사용하여 가중치 파라미터를 학습.

이때, 역전파 알고리즘은 출력층에서 입력층으로 오차를 전파시키면서 가중치 파라미터를 갱신하는데 이 과정에서, 역전파 알고리즘은 출력층에서 입력층으로 전파되는 기울기(gradient)를 계산.

그러나, 이 기울기는 일반적으로 역전파 알고리즘의 깊이(층 수)가 증가함에 따라 지수적으로 작아지는 경향.

이는 활성화 함수의 미분값이 입력값에 따라 0에 가까워지기 때문.

따라서, 역전파 알고리즘은 깊은 신경망에서 학습이 어려워지는 문제가 발생. 이러한 문제가 기울기 소실 문제

기울기 소실 문제는 활성화 함수의 선택, 가중치 초기화 방법, 배치 정규화 등의 기법을 사용하여 해결.

대표적인 해결 방법으로는 ReLU 활성화 함수, He 초기화 방법, 배치 정규화, Leaky ReLU

Sigmoid들의 값이 10 * 0.1 = 1 ⇒ 1 * 0.1 = 0.1 이 되면서 기울기가 점점 작아짐.

층이 많이 쌓여있을 수록 기울기가 너무 작아지면서 학습이 어려워지는 문제가 발생하는 듯?

앞에서 오차가 10이었는데, 0.0001로 바뀌면 너무 작아짐.

오차가 작아지는 건 잘 맞췄다는 뜻인데, 처음 세팅한 wb가 최선의 값이었구나 라는 생각을 함.

그럼 갱신이 안 됨. 오차가 안좋은 초기 wb로 계속 머무른다는 뜻. 활성화


최적화 함수의 종류

경사하강법(Gradient Descent Algorithm): w가 작아지는 때. 오차가 점점 커지고. 경사를 하강 하면서, 경사하강법. 오차를 바로 계산하지 않고,

순간기울기⇒ 미분

epochs가 경사를 몇 번동안 하강할 것인가

경사하강법(Gradient Descent Algorithm)

w가 작아지는 때. 오차가 점점 커지고. 경사를 하강 하면서, 경사하강법. 오차를 바로 계산하지 않고, 순간기울기⇒ 미분 epochs가 경사를 몇 번동안 하강할 것인가.

경사 하강법 中 확률적 경사하강법

SGD가 확률적 경사 하강법.

선택적으로 데이터를 학습하다보니까, 예를들어 epochs가 1~100에서 20번만 사용한다. 등 오차가 작을 수 있다.

21~40까지 내가 선택해서 간다. 오차가 많이 발생. 오차가 좋았다가 안좋았다가 하는 현상이 발생함.

Batch Size : 한 번의 epoch에 모든 데이터를 한꺼번에 집어넣기가 힘듦

그렇기 때문에 batch_size를 5번하는데 epochs가 100이면 1~20/21~40/41~60/61~80/81~100 이렇게 나누는 것.

batch_size의 default값은 32이며, 일반적으로 32, 64가 많이 사용됨

batch_size를 높일경우 메모리 소모가 크고, 학습 속도가 빠름

모멘텀(Momentum)

경사 하강법에 관성을 적용해 업데이트

현재 batch뿐만 아니라 이전 batch 데이터의 학습 결과도 반영하는 형태(쫌 발전함)

관성의 법칙을 포함한 기법. 확률적 경사하강법에 비해 개선된 기법. 지그재그로 이동하는 현상이 줄어듬.

미리 계산을 해보고 적절할 경우 방향을 설정하고, 적절하지 않을경우 새로 계산(기울기를 계산). 시간을 단축할 수 있음.

에이다 그래드(Adaptive Gradient)

학습률 감소 방법을 적용해 업데이트. 학습을 진행하면서 학습률을 점차 줄여가는 방법. 학습을 빠르고 정확하게 할 수 있음.

  • learning rate: 학습률, 보폭. 한번 계산 후 다음 경로를 찾고 나서 움직이는 크기? 라고 보면 됨.
  • 모멘텀: 모멘텀은 모멘텀 값과 기울기 값이 더해져서 실제 스텝을 결정하는데 반면, Nesterov 모멘텀은 모멘텀 값이 적용된 지점에서 기울기 값을 계산.
  • 모멘텀은 속도는 빠르지만 멈추어야 할 시점에서도 관성에 의해 훨씬 멀리 간다는 단점이 있지만, 네스테로프 방법은 모멘텀으로 절반 정도 이동한 후 어떤 방식으로 이동할지 다시 계산해서 스텝을 결정하기 때문에 단점을 극복

암튼 어차피 이래서 결국 가장 많이 쓴다는 adam의 등장

암튼 Adam이라는 최신 모델은

아담은 알엠에스프롭과 모멘텀 두 가지를 합친 듯한 방법으로, 방향과 학습률 두 가지를 모두 잡기 위한 방법입니다.

라는데 adam은 유명하니 안적음 (사실 바로 실습 들어가서 못적음)


이 뒤로 CNN과 딥 러닝을 위한 RNN, LSTN 등 너무 많은데,

더 좋은 학습을 위해서

1. 학습조기중단(early stopping)

2. 드롭아웃(dropout)

3. 데이터 확장(data augmentation) - 증식

같은 방식들.

전이학습 VGG-16 Archintectures - ImageNet Challenge 2014(3x3 filter)

또 이제 이미지 처리를 통해서 이미지 객체 인식 하는 모델까지 배우는 중

 
 

근데 친칠라 엉덩이 몇개 넣었다고 퍼센트 이게 맞음?

​허허 아무튼 이해는 try해봤다..

반응형