=> 다중 퍼셉트론 : 최소 한 개 이상의 은닉층을 포함하여 입력과 출력을 비선형적으로 변환하게
<<순전파>>
<<역전파>>
** 편미분
다변수 함수에서 한 변수에 대한 도함수를 구하는 과정
다른 변수들은 상수로 취급
=> 다변수함수가 특정 변수에 대해 어떻게 변화하는지 파악 가능
** 경사하강법
비용함수(손실 함수)의 값을 최소화하기 위해 사용되는 최적화 알고리즘
=> 함수의 기울기(경사)를 계산하고, 그 기울기가 감소하는 방향으로 파라미터 업데이트
==========================================================
[모델구축]
Tensorflow, Keras
딥러닝을 효율적이고 쉽게 구현할 수 있도록 다양한 기능을 갖추고 있는 딥러닝 프레임워크
TensorFlow: 딥러닝 모델을 정의하고 구축할 수 있는 다양한 API를 제공
고수준 API(tf.keras)와 저수준 API를 통해 다양한 모델을 유연하게 설계 가능
Keras: TensorFlow 위에서 작동하는 고수준 API로, 사용자가 간단하고 직관적으로 모델을 정의할 수 있게 도와줌
직관적인 레이어 기반의 접근 방식을 사용해 빠르게 모델을 구축 가능
[모델 구축 방법]
레이어를 순차적으로 쌓아 올리는 방식으로 각 레리어는 바로 이전 레이어의 출력을 입력으로 받아 처리
단순한 순차적 구조를 가진 신경망에 적합
ex) model = Sequential([
Input(shape=28*28,)),
Dense(32, activation='relu'),
Dense(64, activation='relu'),
Dense(10, activation='softmax')
])
더 복잡한 모델 아키텍처 구성 가능
다중 입력 및 출력, 공유 레이어(동일한 레이어를 여러번 사용), 레이어 간
복잡한 연결 구조 등을 정의 가능
각 레이어의 입출력을 명시적으로 정의함으로 달성
ex) input_shape = (28,28)
input_layer = Input(shape=input_shape, name='input_layer')
x = Flatten()(input_layer)
hidden1 = Dense(128,activation='relu', name='hidden_layer_1')(x)
hidden2 = Dense(64, activation='relu',name='hidden_layer_2')(hidden1)
output_layer = Dense(10, activation='softmax',name='output_layer')(hidden2)
model = Model(inputs=input_layer, outputs=output_layer)
[활성화 함수]
[옵티마이저]
손실을 줄이기 위해 가중치, 학습률 등 신경망의 속성을 변경하는 데 사용되는 알고리즘 또는 방법
SGD(확률적 경사하강법) : 가장 간단한 최적화 프로그램 중 하나. 각 훈련 예제를 개별적으로 사용하여 모델의 가중치를 업데이트
모멘텀 : 관련 방향을 따라 탐색하여 SGD를 가속화하고 현재 업데이트 벡터에 과거 단계의 업데이트 벡터의 일부를 추가하여 높은 곡률 방향의 진동을 완화
Adagrad : 학습 속도를 매개변수에 맞게 조정하여 자주 발생하는 기능과 관련된 매개변수에 대해 더 작은 업데이트를 수행하고, 자주 발생하지 않는 기능과 관련된 매개변수에 대해 더 큰 업데이트를 수행
RMSprop : 가중치에 대한 학습률을 해당 가중치에 대한 최근 기울기 크기의 이동 평균으로 나눈다
Adam : AdaGrad 및 RMSprop 알고리즘의 최상의 속성을 결합하여 노이즈 문제에 대한 희소 기울기를 처리할 수 있는 최적화 알고리즘을 제공
[비용함수]
[배치 크기]
모델 학습 프로세스의 한 번의 반복에서 활용되는 학습 예제의 수
[epochs]
학습 알고리즘이 전체 훈련 데이터세트에서 작동하는 횟수가 결정
** 배치 크기 & 에포크 관계
배치 크기와 에포크 수는 신중하게 균형을 맞춰야 하는 신경망 훈련의 두 가지 기본 하이퍼파라미터
=====================================================
입력 데이터가 1차원 벡터로 이미 변환한 상태
Input(shape(28*28)),
2차원 입력 이미지를 1차원 벡터로 평탄화
Flatten(input_shape(28,28))
픽셀의 최대 정수가 255
255로 나누면 0 과 1로 정규화 가능
0 : 검정
255 : 흰색
=======================================================
CNN : 이미지의 공간 계층 구조 캡쳐 가능 -> 이미지 처리 작업에 적합
[CNN 아키텍처]
[ callback ]
callbacks=[early_stopping_callback, checkpointer]
학습 과정 중에 특정 이벤트가 발생했을 때, 취할 행동을 정의
early_stopping_callback: 이 콜백은 모델의 성능이 더 이상 개선되지 않을 때 학습을 조기에 중단하도록 설정
ex) 검증 데이터에 대한 손실이 일정 기간 동안 개선되지 않으면 학습을 멈춤
이는 과적합을 방지하고 학습 시간을 단축시키는 데 도움이 됨
checkpointer: 이 콜백은 모델의 중간 학습 상태를 파일로 저장하여, 학습 과정에서 가장 좋은 모델을 보존할 수 있게 함
이를 통해 나중에 모델을 재사용하거나, 학습 과정이 끝난 후 최적의 모델 상태로 복원할 수 있다