인공신경망

c.haha.e·2025년 8월 16일

STUDY

목록 보기
18/27

1. 인공신경망(ANN)

가장 기본적인 인공 신경망으로, 그 형태는 확률적 경사하강법을 사용하는 로지스틱 회귀와 매우 유사하다. 인공신경망은 보다 높은 성능을 가진 새로운 종류의 머신러닝 알고리즘일 뿐, 정말 우리 뇌에 있는 뉴런과 같지 않다는 것을 항상 인지해야한다.

입력층: x값, 픽셀값 그 자체이고 특별한 계산수행 없이 원시 데이터를 받아 전달만 한다.

은닉층: 입력층과 출력층 사이에 있는 모든 층으로, 입력값에 가중치를 곱하고 비선형 함수(활성화 함수)를 적용해 특징을 추출한다.

출력층: z값을 계산하고 이를 바탕으로 클래스 예측하여 신경망의 최종 결과를 만든다.

cf) 밀집층(Dense Layer): 모든 뉴런이 앞층의 뉴런과 연결된 구조

ANN은 단일 신경망으로, Dense가 하나로 구성되어있으며, 다층 신경망은 Dense가 여러 개인 신경망이다.

keras의 클래스

  • Dense: 신경망의 밀집층(fully connected layer)을 만드는 클래스로, 각 뉴런이 이전 층의 모든 뉴런과 연결되며,activation 매개변수로 활성화 함수를 지정할 수 있다.
  • Sequential(): 순차적으로 층을 쌓는 모델. 신경망 모델을 만드는 클래스로, 객체 생성 시 신경망 모델에 추가할 층을 지정할 수 있다. 1개 이상일 경우, 리스트의 형태 [] 로 전달한다.
  • dropout: 모델이 과대적합되지 않도록 일부 뉴런을 랜덤하게 끄는(출력=0) 정규화 기법이다.
  • Early Stopping: 모델 훈련 중에 자동으로 특정 동작을 수행하게 해주는 도구인 call back 의 클래스 중 하나로, 검증 성능이 더 이상 좋아지지 않으면 훈련을 중단하여 과대적합을 줄여준다.

옵티마이저(optimizer)

손실함수를 최소화하기 위해 모델의 가중치를 조정하는 알고리즘

이름특징
SGD (Stochastic Gradient Descent)기본적인 옵티마이저. 단순하지만 느릴 수 있음
Momentum이전 단계의 이동을 고려해 속도를 붙임
RMSprop학습률을 개별 파라미터마다 조절
Adam가장 많이 쓰임. 빠르고 안정적
Adagrad / Adadelta희귀 특성 학습에 유리함

2. 활성화 함수(Activation function)

뉴런의 선형 방정식 결과에 적용되는 함수로, 선형을 비선형으로 바꿔서 신경망이 곡선적인 분리/예측을 가능케 하고 더 복잡한 문제를 해결할 수 있도록 도와준다. 용도에 맞게 골라 써야한다.

어떻게 복잡한 문제를 해결하느냐?

ReLU : 입력이 양수일 경우, 활성화 함수가 없는 것처럼 그냥 입력을 통과시키고 음수일 경우 0으로 만든다

sigmoid : 입력값을 0과 1 사이로 변환해서 확률처럼 해석이 가능하다(양수는 1에 가깝고, 음수는 0에 가깝다)

softmax : 여러 출력값들을 확률분포처럼 바꿔서 전체 합이 1이 되도록 조정한다

3. 손실곡선

두 그래프가 비슷하게 낮게 유지되면(=두 그래프가 같을 때), 모델의 일반화 능력(=성능)이 좋다고 할 수 있다.

두 그래프의 간격이 과적합을 의미해서 차이가 적을수록 과적합이 없다

⇒ 간격이 좁고, 그래프가 낮다

Screenshot 2025-05-11 at 1.59.41 PM.png

4. 합성곱 신경망(CNN)

도장 찍어내듯이 출력(특징)이 하나씩 생겨나는 신경망 구조로 도장의 크기, 즉 커널(kernel)의 크기는 하이퍼 파라미터로서 우리가 지정해줘야한다. 입력의 배열 차원과 커널의 차원이 동일해야한다.

여러 가중치들로 계산된 필터(커널)들이 있고, 각 필터별로 나온 출력값들을 모은 것이다. 이 하나의 출력 행렬을 특징맵(feature maps)이라고 한다.

CNN은 여러 개의 필터를 사용하므로, 여러 개의 출력 행렬이 생기는 것이다. 그 여러 feature map을 쌓은 것이 합성곱 층의 출력이다.

feature map 만드는 과정

노란색이 필터 = 도장 / 빨간 x1,x0 글씨는 가중치(w)

전 은닉층의 뉴런 개수 x 출력층의 뉴런 개수 만큼 가중치의 개수가 생긴다. 인공신경망의 개념

합성: 출력층의 개수가 정해지면 그 전 은닉층에서의 가중치 개수가 정해짐

Conv2D(합성곱 층) / MaxPool2D(최대 풀링)

층 이름역할 요약
Conv2D이미지를 스캔하며 특징(패턴)을 뽑음 (모서리, 선, 윤곽 등)
→ 필터를 이미지에 돋보기(🔍) 처럼 움직이며 적용(특정 모양을 응시)
MaxPool2D추출한 특징 중 가장 중요한 것만 남기고 크기를 줄임
→ 이미지에서 가장 강한 특징만 출력하는 역할
[입력 이미지]
↓ Conv2D
[특징맵]  ← 가장자리, 윤곽선, 패턴 등
↓ MaxPool2D
[축소된 특징맵] ← 정보는 유지하되 크기는 절반
  

항상 Conv → MaxPool 순서여야하는가?

No. 일반적인 패턴이긴 하지만 항상 붙여다녀야하는 건 아니다.

패턴설명예시
Conv → MaxPool가장 일반적인 구조간단한 CNN
Conv → Conv → MaxPool더 많은 특징 추출 후 축소VGG
Conv(stride=2)풀링 없이 직접 축소ResNet 등
Conv만 연속임시적으로 특징 추출만성능 조정 목적

https://colab.research.google.com/drive/1P9NCB3MQX5QrCf93VHYfPGa0R1V4qD1y?usp=sharing

01 - https://colab.research.google.com/drive/1P9NCB3MQX5QrCf93VHYfPGa0R1V4qD1y?usp=drive_link

02 - https://colab.research.google.com/drive/1Mu5kBwfkfCIRRQ3nvOF4a3wMaz5Cmebz?usp=drive_link

03 - https://colab.research.google.com/drive/1gpLfy1YFGLyHNLdaA1zVnFN4iPCC4kuo?usp=sharing

profile
기록용 블로그

0개의 댓글