정규화란 데이터베이스 설계에서 테이블 간에 중복된 데이터를 허용하지 않고 무결성을 유지하기 위한 과정이다. 이는 데이터를 효과적으로 저장하고 검색하기 위해 테이블을 구조화하는 프로세스를 의미한다. 정규화는 관계형 데이터베이스에서 사용되며, 데이터의 중복을 최소화하고 각 테이블이 특정 종류의 종속성을 만족하는 데 목적을 둔다. 목적 최종 목적은 이상 현상 발생 가능성을 줄이는 것이다. 중복 최소화 데이터의 중복을 최소화하여 저장 공간을 절약하고 데이터 일관성을 유지한다. 데이터가 중복될 경우 수정이 필요할 때 여러 테이블에서 수정해야 하므로 문제가 될 수 있다. 데이터 일관성 유지 각 테이블이 특정 종류의 종속성을 갖도록 한다. 데이터의 논리적 일관성을 확보하고 변경 시 발생할 수 있는 이상 현상을 방지한..
배치 정규화(Batch Normalization)는 정규화를 모델에 들어가는 입력 데이터뿐만 아니라 모델 내부 히든층의 입력 노드에도 적용하는 것이다. 배치 정규화를 적용하면 매 층마다 정규화를 진행하므로 가중치 초기값에 크게 의존하지 않는다. 즉, 가중치 초기화의 중요도가 감소한다. 또한 과적합을 억제한다. 즉, 드롭 아웃(Drop out)과 L1, L2 정규화의 필요성이 감소한다. 가장 큰 장점은 학습 속도도 빨라진다는 것이다. 배치 정규화를 사용하기 위한 함수/라이브러리 배치 정규화는 하나의 레이어로써 Dense 레이어와 활성화 함수 사이에서 작용한다. 따라서 이번 실습에서는 기본 모델을 생성할 때 활성화 함수와 똑같은 역할을 하는 Activation 레이어를 따로 활용해야 한다. tf.keras...
드롭 아웃(Drop Out)은 모델이 과적합되는 것을 막기 위한 가장 보편적인 정규화(Regularization) 기법 중 하나이다. 드롭 아웃은 데이터를 학습할 때, 일부 퍼셉트론(뉴런)을 랜덤하게 0으로 만들어 모델 내부의 특정 가중치(Weight)에 치중되는 것을 막는다. 이를 통해 모델이 일부 데이터에 가중되는 것을 막고 일반화된 모델을 만들 수 있다. 드롭 아웃을 사용하는데 있어 주의할 점은 학습이 끝난 후 테스트 과정에서는 드롭 아웃을 사용하면 안된다는 점이다. 이번 실습에선 드롭 아웃을 적용한 모델과 적용하지 않은 모델의 차이를 보자. 드롭 아웃을 사용하기 위한 함수/라이브러리 tf.keras.layers.Dropout(prob) prob : 드롭 아웃을 적용할 확률 (0.1 ~ 0.5) i..
L1 정규화 L1 정규화는 가중치(weight)의 절댓값에 비례하는 손실(loss)이 기존 손실 함수(loss function)에 추가되는 형태이다. TotalLoss=Loss+λw∑∣W∣ L1 정규화는 모델 내의 일부 가중치를 0으로 만들어 의미있는 가중치만 남도록 만들어주고, 이를 통해 모델을 일반화시킬 수 있다. 다른 말로 Sparse Model을 만든다라고도 한다. L1 정규화를 적용하기 위해 사용하는 함수/라이브러리 tf.keras.layers.Dense(kernel_regularizer = tf.keras.regularizers.l1(ratio)) ratio : 가중치에 L1 정규화를 적용하는 비율 (0.001 ~0.005) L2 정규화 L2 정규화는 가중치의 제곱에 비례하는 손실이 기존 손..
과적합(Overfitting)이란? 모델이 주어진 훈련 데이터에 과도하게 맞춰져서 새로운 데이터가 입력 되었을 때 잘 예측하지 못하는 현상 즉, 모델이 과도하게 복잡해져 일반성이 떨어진 경우를 의미함 과적합 방지 방법 1. 교차검증 (Cross Validation) 모델이 잘 적합되었는지 알아보기 위해 훈련용 데이터와 별개의 테스트 데이터, 그리고 검증 데이터로 나누어 성능 평가하는 방법 k-fold 교차검증 : 훈련 데이터를 계속 변경하며 모델을 훈련시킴. 데이터를 k등분으로 나누고 K번 훈련시킴. 2. 정규화 모델의 복잡성을 줄여 일반화된 모델을 구현하기 위한 방법 -> 모델 베타i에 패널티를 부여함 L1 정규화 (Lasso) : 불필요한 입력값에 대응되는 베타i를 정확히 0으로 만듦. L2 정규화 ..