FNN (Feedforward Neural Network) 순방향 신경망
- FNN은 데이터 구조에 대한 특별한 가정사항 없는 가장 기본이 되는 신경망
- 데이터가 한 방향으로 전달되는 연결 구조만을 갖는 구조
FNN 구조
- 뉴런들이 모여 계층을 이루고 -> 이 계층이 쌓여 전체적인 신경망을 이루는 구조
- Input Layer + Hidden Layer + Output Layer
- Hidden Layer의 복잡도에 따라서 가변적으로 구성된다.
- FCL 연결
- 뉴런 Neuron
- 얕은 신경망 Shallow Neural Network
- 심층 신경망 Deep Neural Network (DNN)
FNN(특징추출) 뉴런 구조
- 뉴런은 데이터에 내재한 특징을 추출하기 위해 가중치가 있는 선형결합을 입력으로 하여 Activation Function(활성화 함수)를 바탕으로 다음으로 넘겨준다.
- Activation Function은 "Non-Linear"인 비선형적인 함수를 사용하여 비선형을 활용할 수 있게 함
“선형결합” Why?
• 가중치를 바탕으로 중요한 특징에 대한 가중치를 반영을 하기에 특징을
추출하는 과정에서 영향이 큰 데이터를 선택할 수 있도록 역할을 함.
• +b의 상수항을 더하는 이유는 특징의 값을 공간상에 임의의 위치에 표현을
하기 위해서 보통 사용을 함. 그래서 W 가중치 벡터에 상수항을 포함해
서 표기를 하기 함.
Non-Linear Activation Function ?
• 실제로 Activation Function은 상당히 다양한 것을 사용을 한다.
• 기본적인 Activation Function으로는 ReLU등을 활용을 한다.
• 이러한 비선형을 사용을 하여 원하는 형태의 특징을 추출할 수 있게 해준다.
• Layer가 많이 쌓이게 되면 굉장히 복잡한 비선형적인 경계선을 얻을 수 있다.
FNN 기능 - 범용 함수 근사 -
- 뉴런 : 입력 + 가중치에 대한 선형결합 -> Activation Function 적용을 하는 합성함수로 볼 수 있음.
- Layer를 순차적으로 쌓은 형태도 마찬가지로 합성함수로 볼 수 있음
실함수
벡터함수
뉴런
가중치
4계층 신경망
분류와 회귀 문제에서의 연속 함수 근사
-> 비선형으로 복잡한 문제를 해결할 수 있음
뉴런과 계층의 기본 구조 및 수학적 표현
FNN의 개별 뉴런과 활성화 함수의 동작, 그리고 비선형 분류의 필요성을 설명
(a) 뉴런의 동작
- 입력: 여러 입력값 x1,x2,…이 뉴런으로 들어온다.
- 가중치(weight): 각 입력은 가중치 w1,w2,…와 곱해진다.
- 선형결합(linear combination): 입력값과 가중치의 곱을 더한 결과를 구한다.
z=∑(wi⋅xi)+b- 여기서 b는 편향(bias) 입니다.
- 활성화 함수(Activation Function): 선형결합 결과 z에 활성화 함수 f를 적용해 비선형성을 추가한 최종 출력 a를 계산한다.
a=f(z)=f(∑(wi⋅xi)+b)
(b) 계층(Layer)와 구성
- 각각의 뉴런은 위 과정을 거쳐 개별적으로 출력을 계산한다.
- 여러 뉴런으로 구성된 입력층(Input Layer), 은닉층(Hidden Layer), **출력층(Output Layer)**을 갖춘 구조다.
- 수학적으로, 각 계층의 출력은 h(l)로 표현되며,h(l+1)=f(l)(W(l)h(l)+b(l))
(c) 비선형 분류의 필요성
- 이미지 하단의 "Non-linear Classification" 예시는 선형 모델로는 데이터(파란색 원과 빨간색 X)를 분리할 수 없음을 보여준다.
- 따라서 비선형 함수와 다층 구조를 통해 복잡한 경계를 학습할 수 있는 FNN이 필요하다.
다차원 데이터 표현(텐서의 차원)
신경망에서 데이터를 텐서로 표현하는 구조(0D ~ ND)를 설명하며,
텐서 데이터가 다차원 구조를 가지는 이유를 명확히 보여준다.
데이터 차원에 따른 텐서의 표현 방식
차원의 구성:
- 스칼라 (0D Tensor):
단일 값으로 구성됩니다. 예를 들어 4와 같은 값. - 벡터 (1D Tensor):
1차원 배열로 표현됩니다. 예: [1,2,5,9] - 행렬 (2D Tensor):
2차원 배열로 표현됩니다. 예: [111222555999] - 3D 텐서:
여러 개의 행렬이 쌓여 있는 형태입니다(즉, 3차원 구조). 주로 컬러 이미지 등에서 사용된다. - N차원 텐서:
위 구조를 N차원으로 확장. 딥러닝에서는 고차원 텐서를 다룰 수 있습니다. 예: CNN에서 이미지 데이터를 배치(batch) 단위로 처리.
활용:
- 이 텐서 구조는 신경망에서 데이터를 입력하고 중간 계산을 처리하며, 최종 출력까지 이어지는 핵심 데이터 형식이다.
Feedforward Neural Network의 계산 흐름
신경망의 계산 흐름을 단계적으로 시각화하며, 입력층 → 은닉층 → 출력층으로 이어지는 연산 과정을 행렬 기반으로 설명한다.
Feedforward Neural Network의 자세한 행렬 표현
동일한 신경망을 더 복잡하게 확장한 구조를 설명하며, 각 계층에서의 행렬 연산 과정을 상세히 나타낸다.
FNN 네트워크 설계 요소
실제 문제에 적용 - 분류 문제
- 분류 문제는 데이터의 클래스 or 카테고리를 예측하는 문제
- 분류의 수에 따라서 : Binary Classififcation , Multi-Classification
- 출력단을 확률로 설정을 하게 되면, 각 클래스에 대한 확률모델로 확률값으로 예측하게 된다
분류 문제 : Binary Classification
- 출력 노드가 어떠한 값을 내보낼지 모른다 -> 그러나 우리는 이것을 각 클래스에 대한 확률값으로 변환을 해야 비교 & 해석의 용이한 점이 존재
- 확률의 정의에 의해서 0~1사이의 값으로 변환을 해주는 Sigmoid라는 함수를 활용해서 출력단에서 Acitivation으로 활용한다. -> sigmoid 활용
-> 다 여기서는 입력, 출력, 어떤 활성화 이런 관점임
분류 문제 : Multi Classification
- 앞에서와 같이 확률로 여러 개의 클래스를 할당을 하고, 그 합이 1이 되도록 해야하는 경우의 활성화 함수는 “SoftMax”를 주로 사용한다.
실제 문제에 적용 - 회귀 문제
- 회귀 문제의 경우에는 그 값을 그대로 받아야 하기 때문에 앞에서와 달리 변형을 하는 것이 아니라 그 값을 그대로 받는 “항등함수"를 활용한다.
FNN Input Layer
- Input layer의 기능
- 입력 데이터 -> 벡터 형태로 받아 들이기 -> 다음 레이어에 전달
- 입력 데이터의 크기가 n개라면, input layer에 n개의 뉴런이 있어야 한다.
FNN Activation Function
ReLU : Rectified Linear Unit
FNN : Depth & Width
- 신경망의 모델의 크기 : 너비 & 깊이
너비 : 계층에 들어 있는 뉴런의 수
깊이 : Layer의 수
- 특징이 많고 데이터간의 관계가 복잡하면
-> 특징 학습에 관련된 뉴런의 수 증가하도록 설계
-> 절대치는 없어서, 경험 & 유사 모델 성능을 기반으로 하게 된다. - ML에서 사용한 Gridsearch & RandomGridSearch 등과 같은 방식도 사용함~ -> 최근 NAS(Network Architecture Search)
- 일반적인 접근 방식 : 성능이 좋다고 검증된 모델 선택 -> 나의 문제에 맞게 거기서 수정
어제 내용 이어서..
08_dl
02_code
(gdrive에 정리)
1. 모델 구조
- 모델 이름: sequential_2
- 레이어 구성:
- Flatten: 입력 데이터를 평탄화하여 (None, 784) 형태로 변환 (파라미터: 0)
- Dense (첫 번째): 128개의 뉴런을 가지며 활성화 함수와 가중치를 포함 (파라미터: 100,480)
- Dense (두 번째): 10개의 뉴런으로 출력층 구성 (파라미터: 1,290)
- 총 파라미터 수:
- 총 파라미터: 101,770 (397.54 KB)
- 학습 가능한 파라미터: 101,770
- 비학습 파라미터: 0
2. 모델 컴파일
- 손실 함수: sparse_categorical_crossentropy (다중 클래스 분류 문제에 적합)
- 최적화 알고리즘: Adam (학습률 등 하이퍼파라미터 포함)
- 평가지표: accuracy (정확도를 기반으로 평가)
3. 모델 학습
- 데이터셋: X_train, y_train 사용
- 에포크(Epoch): 총 3회 반복
- 학습 결과:
- Epoch 1:
- 손실(Loss): 0.4290
- 정확도(Accuracy): 87.72%
- Epoch 2:
- 손실(Loss): 0.1251
- 정확도(Accuracy): 96.22%
- Epoch 3:
- 손실(Loss): 0.0822
- 정확도(Accuracy): 97.55%
- Epoch 1:
4. 요약
이 파일은 간단한 딥러닝 모델을 설계하고 MNIST와 같은 이미지 분류 작업을 수행한 예제입니다. 모델은 입력 데이터를 평탄화한 후 두 개의 밀집(Dense) 레이어를 통과하며 학습됩니다. 최종적으로 높은 정확도를 달성했습니다(97.55%).
'ASAC 빅데이터 분석가 7기 > ASAC 일일 기록' 카테고리의 다른 글
ASAC 빅데이터 분석가 과정 45일차 (25.02.13) (0) | 2025.02.13 |
---|---|
ASAC 빅데이터 분석가 과정 44일차 (25.02.12) (0) | 2025.02.12 |
ASAC 빅데이터 분석가 과정 42일차 (25.02.10) (0) | 2025.02.10 |
ASAC 빅데이터 분석가 과정 41일차 (25.02.07) (0) | 2025.02.07 |
ASAC 빅데이터 분석가 과정 40일차 (25.02.06) (0) | 2025.02.06 |