본문 바로가기
빅데이터분석기사

[빅분기] 10.4. 딥러닝

by Point-Nemo 2025. 8. 29.

1. 딥러닝의 개요

https://hongong.hanbit.co.kr/ai-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5-%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%B0%A8%EC%9D%B4%EC%A0%90-%EC%B4%9D%EC%A0%95%EB%A6%AC/

- 딥러닝은 인공신경망에 기반을 둔 머신러닝의 한 종류로 연속된 층에서 점진적으로 의미있는 표현을 배우는 데 강점이 있으며, 데이터로부터 표현을 학습하는 새로운 방식

- 인공신경망을 여러 겹 쌓은 것이 곧 딥러닝으로 많은 층을 사용한 것이 되며, 이것이 모델의 깊이가 됨

- 인공신경망의 기본 구성요소는 다른 머신러닝 알고리즘이 발전되어서 만들어진 것인데, 머신러닝은 정형 데이터에 적합한 반면, 딥러닝은 비정형 데이터에 잘 맞음

 

https://www.gttkorea.com/news/articleView.html?idxno=5448

- 몇 개의 층으로 이루어진 네트워크가 이미지 안의 숫자를 인식하기 위해 Layer를 거쳐 이미지를 변환하여 인식하고 최종적으로 정보를 출력하는 것을 확인할 수 있음

- 인공신경망부터 시작되었지만, 인공신경망의 한계를 극복하기 위해 심층 신경망 기법이 제안됨


2. 인공신경망 (ANN)

1) ANN의 개요

- 인간 뇌의 피질 영역 내에는 수많은 뉴런들이 시냅스로 층층이 연결되어 존재, 그것을 신경망이라고 부름 

- 인공 신경망은 인간 뇌의 신경망에 착안하여 구현된 컴퓨팅 시스템의 총칭 (주로 소프트웨어로 구현)

 

2) ANN의 연구

- 1943년 매컬럭과 피츠: 인간의 뇌를 수많은 신경세포가 연결된 하나의 디지털 네트워크 모형으로 간주하고 신경세포의 신호처리 과정을 모형화하여 단순 패턴분류 모형을 개발

 

3) 구조

https://goldenrabbit.co.kr/2024/02/06/pytorch-%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%9E%85%EB%AC%B8-%EC%9D%B8%EA%B3%B5-%EC%8B%A0%EA%B2%BD%EB%A7%9D-ann-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%E2%9D%B6/

 

- 인공신경망은 입력층, 은닉층, 출력층으로 구성되어 있음

- 입력층과 출력층 사이에 은닉층이 하나인 경우를 단층신경망, 여러 개인 경우를 다층신경망이라고 함

- 은닉층이 여러개일 때는 각 층은 여러 개의 뉴런들로 구성되어 있고, 또 각 층에 있는 뉴런들은 전, 후 층의 뉴런들과 연결되어 있음 (이때, 같은 층의 뉴런들은 서로 연결되어 있지 않음)

 

- 인공신경망에서 뉴런(노드)은 기본적인 정보처리 단위이고, 뉴런 여러 개가 가중된 링크로 연결된 형태, 각 가중된 링크에는 수치적인 가중치가 있고, 이는 인간 뇌의 시냅스에 해당함

- 가중치는 한 층의 뉴런들이 다른 층의 뉴런들과 연결될 때 그 연결 강도를 결정함 따라서 뉴런 간의 가중치가 크다면 서로 강하게 연결되어 있는 것

- 최초 가중치는 랜덤 값으로 설정되기 때문에 이 상태에서 어떤 값을 입력해도 원하는 값이 출력되지 않음, 따라서 인공신경망은 훈련 데이터를 통해 주어진 환경에 적응할 수 있도록 가중치를 반복적으로 갱신하여 신경망의 구조를 선택하고, 활용할 학습 알고리즘을 결정한 후 훈련을 수행

 

https://deepcell.kr/bbs/board.php?bo_table=ai&wr_id=11

- 뉴런은 입력 링크에서 여러 신호를 받는데, 개별 신호의 강도에 따라 가중되며 활성 함수는 새로운 활성화 수준을 계산하여 출력 링크로 출력 신호를 보냄

- 이때 입력신호는 미가공 데이터 또는 다른 뉴런의 출력이 될 수 있으며, 출력 신호 또한 문제의 최종적인 해(solution)가 되거나 다른 뉴런의 입력이 될 수 있음

 

4) 뉴런의 계산

- 뉴런은 전이함수, 즉 활성화 함수를 사용하며 활성화 함수를 이용해 출력을 결정하며 입력신호의 가중치 합을 계산하여 임계값과 비교함

- 가중치 합이 임계값보다 작으면 뉴런의 출력은 -1, 같거나 크면 +1을 출력함

 

5) 뉴런의 활성화 함수

https://wikidocs.net/250622

 

a. 시그모이드 함수

- 시그모이드 함수의 경우 로지스틱 회귀분석과 유사하며, 0~1의 확률값을 가짐

 

b. softmax 함수

- 표준화지수 함수로도 불리며, 출력값이 여러 개로 주어지고, 목표치가 다범주인 경우 각 범주에 속할 사후확률을 제공

 

c. ReLU 함수

- 입력값이 0이하는 0, 0보다 크면 그 x값을 그대로 반환하는 함수, 최근 딥러닝에서 많이 활용

 

d. Leaky Relu 함수

- dead ReLU란 ReLU 모델이 학습하는 동안 일부 뉴런이 0만을 출력하여 활성화되지 않는 문제

- 이런 dead ReLU를 해결하기 위해 입력값이 0보다 작은 경우 매우 작은 기울기를 부여하여 출력값이 0이 되는 걸 방지

 

e. 하이퍼볼릭 탄젠트 함수

http://taewan.kim/post/tanh_diff/#google_vignette

- 입력값을 -1과 1사이의 값으로 변환해주는 함수

- 시그모이드와는 달리 0을 중심으로 하고있기 때문에 시그모이드와 비교해 반환값의 변화폭이 더 크며 기울기 소실 문제가 적음

 

6) 단일 뉴런의 학습 (단층 퍼셉트론)

- 퍼셉트론은 선형 결합기와 하드 리미터로 구성됨, 초평면은 n차원 공간의 두 개의 영역으로 나눔

- 초평면을 선형 분리함수로 정의

 

7) 신경망 모형 구축시 고려사항

a. 입력 변수

- 신경망 모형은 그 복잡성으로 인하여 입력 자료의 선택에 매우 민감

- 입력변수가 범주형 또는 연속형 변수일 때 아래의 조건이 신경망 모형에 적합

범주형 변수: 모든 범주에서 일정 빈도 이상의 값을 갖고 각 범주의 빈도가 일정할 때
연속형 변수: 입력변수 값들의 범위가 변수간의 큰 차이가 없을 때

 

- 연속형 변수의 경우 그 분포가 평균을 중심으로 대칭이 아니면 좋지 않은 결과를 도출

변환: 고객의 소득 -> 로그 변환
범주화: 각 범주의 빈도가 비슷하게 되도록 설정

 

b. 가중치의 초기값과 다중 최소값 문제

- 역전파 알고리즘은 초기값에 따라 결과가 많이 달라지므로 초기값의 선택은 매우 중요함

- 가중치가 0이면 시그모이드 함수는 선형이 되고 신경망 모형은 근사적으로 선형 모형이 됨

- 일반적으로 초기값은 0 근처로 랜덤하게 선택하므로 초기 모형은 선형 모형에 가깝고 가중치값이 증가할수록 비선형 모형이 됨

- 초기값이 0이면 반복하여도 값이 전혀 변하지 않고, 크면 좋지 않은 해를 주는 문제점이 있기에 주의 필요

 

c. 역전파 알고리즘

https://prod.velog.io/@peterpictor/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EC%98%A4%EB%A5%98-%EC%97%AD%EC%A0%84%ED%8C%8C

- 출력층에서 입력층 방향으로 오차를 전파시키며, 각 층의 가중치를 업데이트하며 최적의 학습 결과를 찾아가는 방법

- 편미분을 사용하여 오차를 역방향으로 전파함녀서 신경망의 가중치와 편향을 업데이트

 

- 학습률: 역전파 알고리즘에서 가중치와 편향을 업데이트할 때 얼마나 크게 업데이트할지를 결정하는 하이퍼파라미터

- 학습률이 높을수록 가중치와 편향의 업데이트를 크게 수행

- 학습률이 너무 크면 가중치와 편향이 지나치게 크게 업데이트 되어 최적의 모델을 찾지 못할 수도 있음

 

d. 학습 모드

온라인 학습모드 - 각 관측값을 순차적으로 하나씩 신경망에 투입하여 가중치 추정값이 매번 바뀜
- 일반적으로 속도가 빠르며, 훈련자료에 유사값이 많은 경우 그 차이가 더 두드러짐
확률적 학습모드 - 온라인 학습 모드와 같으나 신경망에 투입되는 관측값의 순서가 랜덤함
배치 학습모드 - 전체 훈련 데이터를 동시에 신경망에 투입

 

e. 은닉층과 은닉노드의 수

- 신경망을 적용할 때 가장 중요한 부분이 모형의 선택(은닉층의 수와 은닉노드의 수 결정)

- 은닉층과 은닉노드가 많으면 가중치가 많아져서 과대적합 문제가 발생

- 은닉층과 은닉노드가 적으면 과소적합 문제가 발생

- 은닉층의 수가 하나인 신경망은 범용 근사자이므로 모든 매끄러운 함수를 근사적으로 표현할 수 있음 (가능하면 하나로 선정)

- 은닉노드의 수는 적절히 큰 값으로 놓고 가중치를 감소시키며 적용하는 것이 좋음

 

f. 과대 적합 문제

- 신경망에서는 많은 가중치를 추정해야 하므로 과대적합 문제가 빈번함

- 알고리즘의 조기종료와 가중치 감소 기법으로 해결 가능

- 모형이 적합하는 과정에서 검증 오차가 증가하기 시작함녀 반복을 중지하는 조기 종료를 시행

- 가중치 감소라는 벌점화 기법 사용

 

g. 경사감소소멸 문제

- 신경망의 층수(은닉층의 개수)가 늘어나면서 앞쪽에 있는 은닉층들의 가중치가 제대로 훈련되지 않는 현상

- 이러한 한계를 극복하기 위해 DBN, SAE, CNN 등 딥러닝 알고리즘들이 인공신경망을 기반으로 해서 생겨남


3. 심층 신경망 (DNN)

1) DNN의 개요

https://allensdatablog.tistory.com/entry/%EC%8B%AC%EC%B8%B5%EC%8B%A0%EA%B2%BD%EB%A7%9DDNN-%EC%9D%B4%EB%9E%80

- 심층신경망은 입력층과 출력층 사이에 다중의 은닉층을 포함하는 인공신경망을 뜻함 (우측)

 

2) DNN의 특징

- 심층신경망은 다중의 은닉층을 가지고 있기 때문에 데이터의 잠재적인 구조를 파악할 수 있으며 비선형적 관계 학습이 가능

- 하지만 학습을 위해 수많은 연산이 필요하고, 과한 학습으로 인해 실제 데이터에 오히려 오차가 증가하는 과적합 혹은 높은 시간 복잡도 등의 문제가 발생할 수 있음

- 2000년대 들어서 드롭아웃, ReLU, 배치 정규화 등의 기법을 적용함으로써 이러한 문제를 해결함

- 의료분야에서 암 진단 시스템 구축 등에 활용되고, 재무분야에서는 주가지수예측, 기업신용평가 등에 활용됨

 

3) 오토 인코더

https://seol8118.github.io/ml/3min-dl-ch08/#

- 인코더를 통해 입력을 신호로 변환한 다음 다시 디코더를 통해 레이블 등을 만들어내는 비지도 학습 방법

- 입력층보다 적은 뉴런을 가진 은닉층을 중간에 넣어줌으로써 차원을 줄이고 이때 학습을 통해 소실된 데이터를 복원한 후 입력 데이터의 특징을 효율적으로 응축한 새롱누 출력을 만들어냄 

- 입력과 출력이 동일한 좌우대칭 구조

4. 합성곱 신경망 (CNN)

1) CNN의 개요

- 사람의 시각인지 과정을 모방해서 인공신경망에 필터링 기법을 적용한 것으로, 이미지와 같은 2차원 데이터를 분석하는 심층신경망 이론

- CNN은 필터링을 통해 입력된 이미지로부터 특징을 추출한 뒤 신경망에서 분류 작업을 수행

- ex) 어떤 이미지를 CNN에 입력시켜주면, 그 이미지가 개인지 고양이인지에 해당하는 이미지 분류를 수행하도록 학습 시킴

- 영상 인식, 영상 분류, 이미지 인식, 자연어 처리 등에 주로 사용되며 자율주행자동차 등에도 활용

 

2) CNN 알고리즘

https://dotiromoook.tistory.com/19

- 기존 인공신경망의 경우는 이미지 픽셀값들을 그대로 입력받아서 어떤 클래스에 속하는지 분류하는데, 같은 클래스의 데이터지만 살짝만 변형이 생겨도 각 경우에 대한 훈련 데이터가 모두 필요했고, 그에 따라 훈련시간도 상당히 길어진다는 단점이 있었음

- CNN 알고리즘에서는 이미지 픽셀값들을 그대로 입력받는 것보다는 이미지를 대표할 수 있는 특성들을 도출해서 신경망에 넣어주는 방법을 사용

- 특징을 추출하는 '합성곱(Convolution) 레이어'와 추출된 특징 데이터의 사이즈를 줄이고 노이즈를 상쇄시키는 '풀링 레이어'로 구성

 

a. 합성곱 과정

https://dotiromoook.tistory.com/19

- 이미지 데이터가 입력되었을 때 특징을 뽑아내는 과정에 해당

- 합성곱 층의 뉴런은 이미지의 모든 픽셀에 연결되지 않고 수용 영역 안에 있는 픽셀에만 연결됨

- 수용 영역의 용량만큼 필터가 존재하며, 필터는 커널이라고도 함

- 필터는 합성곱층에서의 가중치 파라미터에 해당하며, 학습 단계에서 적절한 필터를 찾도록 학습됨

- 컨볼루션 또는 필터링 과정을 통해 얻은 특성 지도들은 ReLU와 같은 활성화 함수를 거쳐 출력됨

 

- 합성곱 연산을 적용하면 입력데이터보다 작은 크기의 특성 맵이 출력되며, 이 과정이 반복되면 데이터의 크기가 작아지고 정보 손실이 발생할 수 있음 이러한 문제를 해결하기 위해 이미지의 가장자리를 특정 값으로 감싸는 패딩 과정을 수행

 

● Feature Map

- CNN에서 합성곱 계층의 입출력 데이터를 Feature Map이라고 하며 입력된 FM은 Filter를 통해 출력 FM으로 나오게 됨

- Filter는 주로 4X4, 3X3의 행렬로 정의되며, 특징을 추출하기 위해 사용하는 파라미터

- 지정된 간격으로 이동하면서 전체 입력 데이터와 합성곱을 통해 FM을 만들어냄 

- 여기서 지정된 간격으로 필터를 순회하는 간격을 Stride라고 하며 Filter와 Stride에 따라 결과 값이 달라질 수 있음

- 위 그림은 3X3 Filter에 Stride가 1인 경우

 

- 7X7의 Feature Map에서 Filter가 3X3이고 Stride가 2일 때, 출력 Feature Map의 크기는 7-3/2 +1 = 3이 되며 

출력 Feature Map의 크기는 3X3이라는 것을 알 수 있음

 

Padding

https://ardino.tistory.com/40

- 출력 Feature Map을 계산할 때 Stride 설정에 따라 출력 Feature Map이 정수로 나누어 떨어지지 않아 Filter나 Stride를 사용할 수 없게 되며, 이런 문제로 정보가 사라지는 등의 문제가 발생할 수 있어 Padding을 사용해 방지함

- Padding은 입력 FM의 외곽에 지정된 픽셀만큼 특정값으로 채워넣는 것을 의미함 (보통 0을 채워 넣음)

 

b. 풀링 과정

https://wikidocs.net/62306

- 합성곱 연산 이후에 풀링이라고 불리는 과정을 통해 활성화된 특성 지도들의 크기를 줄이며 이 특성 지도들에 다시 컨볼루션, 활성화, 서브 샘플링을 수행해서 점차적으로 로컬한 특성 지도로부터 글로벌한 특성 지도를 만들어감

- 이 과정을 여러 번 반복하여 얻어진 최종 특성지도는 인공신경망에 입력되어 이미지가 어떤 클래스 라벨에 속하는지 분류해주기에 CNN은 특성 추출 신경망과 분류 신경망을 직렬로 연결한 구조로 볼 수 있음

- 풀링은 합성곱 연산 이후에 필수적으로 적용해야하는 것은 아니며, 데이터의 사이즈를 줄이고자 할 때 선택적으로 적용하는 과정

- 정해진 필터 크기 안에서 가장 큰 값을 해당 영역의 대표값으로 보고 뽑아내는 것을 맥스 풀링이라고 함

- 정해진 필터 크기 안에서 평균 값을 대표값으로 보는 것은 평균 풀링이라고 함

5. 순환 신경망 (RNN)

https://thebook.io/080289/0189/

1) RNN의 개요

- 시계열 데이터를 처리하기 위한 모델로 순차적이며 반복적인 데이터를 학습하는 데 특화된 알고리즘

- 내부가 순환구조로 이루어져 있는 인공신경망 즉, 입력층/은닉층/출력층의 3단계 구조로 이루어져 있으나, 가장 큰 특징은 은닉층이 이전 데이터를 참조하도록 서로 연결되어 있다는 것

- 과거에 학습했던 내용을 현재의 학습에 반영하며 신경망 내부에 상태를 저장하여 시퀀스 형태의 데이터 입력을 처리하여 앞으로의 데이터를 예측함

- 동일한 가중치와 편의가 모든 입력 값에 대해서 동일하게 사용되며, RNN 네트워크를 재귀적으로 사용하므로 길이에 대한 제한이 없음

- 병렬처리가 불가능하고, 순서대로 처리해야 하므로 속도가 느림

 

2) RNN의 특징

- 음성인식이나 텍스트의 앞 뒤 단어를 파악하는 분석과 같이 과거 데이터를 고려하여 현재 입력데이터를 순차적으로 처리하는 분서겡 주로 사용 (자동 번역, 단어 의미 판단, 이미지 캡션 생성 등의 자연어 처리 분야)

- 초기값에 따라서 과거 데이터를 계속 곱할수록 작아지는 문제가 발생

- 매 시점마다 심층신경망이 연결되어 있을 경우, 오래 전의 데이터에 대한 기울기 값이 소실되는 문제가 발생 가능 

- 이를 해결하기 위한 모델로 LSTM이 있음


6. LSTM 

https://velog.io/@jekim5418/NLP-LSTM

1) LSTM의 개요

- RNN의 문제점은 입력된 데이터와 참고해야 할 데이터의 위치 차이가 커질 때, 문맥을 연결하기 힘들다는 것

- 이러한 장기 의존성 문제(과거 정보가 마지막까지 전달되지 못하는 현상)를 보완할 수 있는 딥러닝 프레임워크가 LSTM

 

- RNN은 단순히 이전 은닉층 값과 현재 입력값에 각각 가중치를 곱하고 tanh 함수를 거쳐 얻은 출력값을 해당 순번의 은닉층 값으로 계산하는 과정을 반복함 (LSTM도 은닉층에서 출력층으로 넘어가는 연산은 동일)

- 하지만 LSTM에서는 이전 단계의 정보를 메모리 셀에 저장하여 현재 시점의 정보를 토대로 과거 정보를 얼마나 반영할지 결정하고 그 결과에 현재의 정보를 더해서 다음 시점으로 정보를 전달함

 

- LSTM은 RNN과 비교해 긴 시퀀스의 입력을 처리하는 데 탁월한 성능을 보임

- LSTM은 각각의 메모리와 결과값을 컨트롤 가능하다는 장점이 있고 메모리가 덮어씌워질 가능성과 연산속도가 느리다는 단점이 있음