LG DX DATA SCHOOL

02/10 ANN

getfeelingsfrom 2026. 2. 13. 09:20

퍼셉트론(ANN)

입력층으로 표현하지만 실질적 연산은 일어나지 않음

다층 퍼셉트론 ⇒ 출력층(뉴런의 핵심 기능인 다항연산과 시그모이드라는 function으로 이루어짐) 하나만 있다는 뜻

다양한 형태의 자극 정보가 들어오면 각각의 가중치가 적용되어 최종 합산 ⇒ 출력층으로

활성함수

y=0 /1 출력의 결과에 의해서 다음 번 뉴런을 활성화할지말지 정해짐

self attention = w의 집합

w는 새로운 시각 벡터를 만들어내는거라고 이해해야함 → 수십차원일거임 1차원아님 !

y’ = w1x0 + w2x1 + wx2

트랜스포머는 다양한연산을 통해 다양한 관점을 보고 싶을 떄 사용하는 것

가운데는 연산을 위한 노드의 개수

출력은 관점 개수 ?

입출력 개수 맞춰야하는데 시퀀셜이 해줌

sequential에 대해 확인하기

입력층 없음 ⇒ 우리가 설정하는거 아님

중간층 = layers.Dense(512, activation="relu"), ⇒ 각 칼럼 값은 1차원 ⇒ 다 합쳐져서 2차원

출력층= layers.Dense(10, activation="softmax") ⇒ mnlist가 열개라서


1. 퍼셉트론과 인공신경망(ANN)의 구조

퍼셉트론은 인간의 뇌세포(뉴런)를 모방한 인공 지능의 가장 기초적인 단위

  • 입력층 (Input Layer):
    • 메모하신 대로 실제 연산은 일어나지 않음
    • 단순히 데이터(x)가 시스템으로 들어오는 통로 역할
  • 가중치 (Weights, w):
    • 각 입력 신호가 결과에 주는 영향력을 조절
    • 학습이란 결국 데이터에 맞는 최적의 w 값을 찾아가는 과정
  • 출력층 (Output Layer):
    • 들어온 자극(x.w)을 모두 합산한 뒤,
    • 활성함수(Activation Function)를 거쳐 최종값을 내보냄

2. 활성함수 (Activation Function)

뉴런이 다음 뉴런으로 신호를 보낼지 말지 결정하는 '문지기'

  • Step Function: 과거의 방식. 0 아니면 1로만 출력
  • Sigmoid: 0~1 사이의 연속적인 확률값으로 출력 (초기 딥러닝에서 주로 사용)
  • ReLU: 최근 가장 많이 쓰이는 함수.
    • 음수는 0으로,
    • 양수는 그대로 통과시켜 연산 속도가 빠름
  • Softmax: 다중 분류(예: MNIST 숫자 0~9 맞추기)에서 사용하며, 출력값의 총합이 1(100%)이 되도록 만들어 어떤 클래스일 확률이 높은지 보여줌

3. Self-Attention과 트랜스포머 (Deep Dive)

w는 새로운 시각 벡터를 만드는 것

  • Self-Attention: 입력 데이터 내의 요소들끼리 서로 얼마나 연관이 있는지 계산
  • 다양한 관점 (Multi-Head Attention):
    • 트랜스포머는 같은 데이터를 여러 개의 서로 다른 가중치 집합(w)으로 바라봄
    • 어떤 w는 문법을 보고, 어떤 w는 문맥을 봄
    • 결과적으로 1차원적인 수치가 아니라 수십 차원의 고차원 벡터로 정보를 재구성

4. Keras/TensorFlow 코드 분석 (Sequential 모델)

Sequential 모델이란?

계층(Layer)을 선형으로 차곡차곡 쌓는 가장 단순한 구조

"입력 → 중간 → 출력" 순서대로 데이터가 흐름

주요 레이어 분석

구분 코드 예시 설명

중간층 (Hidden) layers.Dense(512, activation="relu") 512개의 노드(뉴런)를 가짐
데이터의 특징을 512개의 관점으로 복잡하게 추출    
출력층 (Output) layers.Dense(10, activation="softmax") MNIST처럼 0~9까지 숫자를 맞추는 문제라면 결과값이 10개가 나와야 하므로 노드 수를 10으로 설정
  • 입력층 설정: Sequential 모델에서 첫 번째 레이어에 input_shape를 지정하거나, 데이터를 처음 넣을 때 자동으로 크기가 결정

1. 입력층과 가중치 (w)

그림의 가장 왼쪽 x1, ..., xn 부분이 입력층

  • 1 (Bias):
    • 맨 위에 있는 숫자 '1'은 편향(Bias)을 의미
    • 데이터가 아무리 0이어도 최소한의 자극을 주어 모델이 유연하게 학습하게 도움
  • 화살표 (w):
    • 각 입력값에 곱해지는 가중치
    • 이 화살표들의 굵기(값)를 조절하는 것이 인공지능 학습의 본질

2. 중간층 (Hidden Layer): "다항식과 활성함수의 만남"

그림 중간의 큰 원 안을 보면 다항식과 '$f$'로 나뉘어있음 → 이게 뉴런 한 개가 하는 일의 전부

  • 다항식 연산: $w_1x_1 + w_2x_2 + \dots + b$ 처럼 들어온 신호들을 가중치와 곱해서 다 합.
  • 활성함수 ($f$):
    • 합산된 결과값을 받아서 "다음 층으로 보낼까 말까?"를 결정
    • ReLUSigmoid가 바로 이 $f$의 자리에 들어갑니다.
  • 관점: 512개의 노드가 있다면, 똑같은 입력 데이터를 보고도 512개의 서로 다른 '다항식+활성함수' 조합(관점)으로 데이터를 해석한다는 뜻

3. 출력층 (Output Layer): "최종 판단"

오른쪽 끝에 있는 3개의 노드는 최종 결과를 나타냄

  • $F : p(Y)=1$: 특정 클래스(예: 숫자 3)일 확률을 계산함
  • 결과값 (0, 1, 1): 그림 우측 상단의 0 1 1 = 3이라는 표현은, 여러 노드의 출력 조합을 통해 최종적으로 "이 데이터는 숫자 3이다"라고 판정하는 과정을 의미

🔍 이미지 속 핵심 포인트 복습

  • 노드 내부 구조: 하나의 노드는 [가중합(다항식) ➔ 활성함수(f)]
  • 의 2단계 공정으로 이루어짐
  • 연결성:
    • 모든 입력이 모든 중간 노드에 연결
    • 이를 Dense(전결합) 레이어라 부름

신경망의 연결 =층의 연결

신경망의 핵심 구성 요소는 층

층 :

  • 데이터를 위한 필터
  • 주어진 문제에 더 의미있는 표현을 입력된 데이터로 추출

케라스 모델을 만드는 여러 방법

sequential model

기울기 소실 문제

층을 깊게 쌓아야 좋긴한데 너무 많아 지면 기울기 소실 문제

잔차 학습 ~ 등등의 필요

식의 튜닝 일어남

텐서플로우는 접근을 돌아주는게 케라스

가장 기본이 데이터셋을 전처리 해서 가지고 옴

배열 만들음 → 준비된 데이터 정보를 학습하라고 신경망(층을 쌓으면 된다) 구축

쌓기만 하면 됨 ⇒ 병렬 구조 안됨 . sequence로 쌓아야한다

병렬로 연결 안 함

[순서 ㅈㄴ중요]

모델 만들고 → 컴파일해서 → 최적화 하고 → fitting (epoch, 배치사이즈) → 유효성 검사→ 평가


1. 신경망의 핵심과 구조적 특징

  • 층(Layer)의 역할: 데이터를 통과시키며 불필요한 정보는 거르고 문제 해결에 필요한 핵심 특징만 걸러내는 '필터' 역할을 수행
  • Sequential 모델:
    • 층을 일직선으로 순차적으로만 쌓는 방식
    • 구조가 단순하여 병렬 연결(여러 길로 갈라지는 구조)은 불가능
  • 깊은 층의 양날의 검:
    • 층이 깊을수록 고차원적인 특징을 추출할 수 있어 성능이 좋아지지만, 너무 깊어지면 학습 신호가 사라지는 기울기 소실(Vanishing Gradient) 문제가 발생함. 이를 해결하기 위해 잔차 학습(Residual Learning) 같은 기술로 식을 튜닝해야 함.

2. [중요] 딥러닝 모델 실행 순서 (Pipeline)

신경망 학습은 아래의 엄격한 순서를 따름. 이 순서가 틀리면 모델이 작동하지 않거나 학습이 제대로 되지 않음.

  1. 데이터 준비 및 전처리 (Preprocessing):
    • 데이터셋 적재 후 신경망이 읽을 수 있는 배열(Tensor) 형태로 만듦.
    • 2차원 이미지를 1차원 줄세우기(Reshape)하고, 값을 0~1 사이로 맞춤(Scaling).
  2. 모델 구축 (Build):
    • keras.Sequential을 사용하여 필요한 층(Layer)을 차례대로 쌓음.
  3. 컴파일 (Compile):
    • 최적화 도구(Optimizer): 가중치를 어떻게 업데이트할지 정함(예: rmsprop).
    • 손실 함수(Loss Function): 정답과 얼마나 틀렸는지 계산할 식을 정함.
  4. 훈련 (Fitting):
    • model.fit()을 통해 데이터를 주입함.
    • Epoch: 전체 데이터를 몇 번 반복해서 볼 것인가.
    • Batch Size: 한 번에 몇 개씩 묶어서 학습하고 가중치를 업데이트할 것인가.
  5. 유효성 검사 및 평가 (Validation & Evaluation):
    • 학습 중 혹은 학습 후, 한 번도 보지 못한 데이터(Test set)로 모델의 실력을 최종 확인 함.

3. 케라스(Keras)와 텐서플로우(TensorFlow)의 관계

  • 텐서플로우: 아주 복잡하고 로우레벨(Low-level)의 연산을 담당하는 엔진임.
  • 케라스: 텐서플로우 위에서 사람이 이해하기 쉬운 직관적인 명령어로 신경망을 쌓게 도와주는 도구임. 즉, 케라스 덕분에 복잡한 수식 대신 layers.Dense 같은 명령어로 층을 쌓을 수 있는 것임.

'LG DX DATA SCHOOL' 카테고리의 다른 글

02/09 mnlist  (1) 2026.02.13
02/03 화 02/05 목요일 SVM  (0) 2026.02.09
0130 인공신경망  (0) 2026.01.30
0129 목요일 추천시스템  (0) 2026.01.30
01/27 NLP  (0) 2026.01.27