diff --git "a/10\354\243\274\354\260\250_\354\230\210\354\212\265\352\263\274\354\240\234.pdf" "b/10\354\243\274\354\260\250_\354\230\210\354\212\265\352\263\274\354\240\234.pdf"
new file mode 100644
index 0000000..38622fc
Binary files /dev/null and "b/10\354\243\274\354\260\250_\354\230\210\354\212\265\352\263\274\354\240\234.pdf" differ
diff --git "a/Week13_\353\263\265\354\212\265\352\263\274\354\240\234.ipynb" "b/Week13_\353\263\265\354\212\265\352\263\274\354\240\234.ipynb"
new file mode 100644
index 0000000..bf0163e
--- /dev/null
+++ "b/Week13_\353\263\265\354\212\265\352\263\274\354\240\234.ipynb"
@@ -0,0 +1,398 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "VsEwV1k2sc_L"
+ },
+ "source": [
+ "# **Description**\n",
+ "- 아래 코드는 **Dropout**과 **Batch Normalization** 기법을 사용하여 Digits 데이터셋에 대해 MLP 모델을 학습하는 코드입니다.\n",
+ "- PyTorch의 `nn.Sequential`을 사용해 모델을 간단히 정의하였습니다.\n",
+ " - 기본 모델 vs dropout 적용 모델 vs dropout + batch normalization 적용 모델의 test 결과 비교를 통해 각 기법의 영향을 알아보고자 합니다.\n",
+ "- 아래 모델 정의 코드 내에 `##답안 코드 작성##` 부분을 채우면서 코드를 실행시켜 주세요!"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "NVFE9r2Qsc_N"
+ },
+ "source": [
+ "## **데이터 준비**"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "1bM7QKTWsc_O"
+ },
+ "outputs": [],
+ "source": [
+ "import torch\n",
+ "from torch import nn, optim\n",
+ "from torch.utils.data import TensorDataset, DataLoader\n",
+ "\n",
+ "from sklearn.datasets import load_digits\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from tqdm import tqdm\n",
+ "import matplotlib.pyplot as plt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "id": "2Yp64KE6sc_P"
+ },
+ "outputs": [],
+ "source": [
+ "## 데이터를 훈련용과 테스트용으로 분리\n",
+ "# 전체의 20%는 검증용\n",
+ "\n",
+ "digits = load_digits()\n",
+ "\n",
+ "X = digits.data\n",
+ "Y = digits.target\n",
+ "X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2)\n",
+ "\n",
+ "X_train = torch.tensor(X_train, dtype=torch.float32)\n",
+ "Y_train = torch.tensor(Y_train, dtype=torch.int64)\n",
+ "X_test = torch.tensor(X_test, dtype=torch.float32)\n",
+ "Y_test = torch.tensor(Y_test, dtype=torch.int64)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "XpUWgc2Gsc_P"
+ },
+ "source": [
+ "## **Dropout** \n",
+ "- **Dropout**은 **과적합 방지**를 위해 훈련 시 일부 노드를 확률 $p$로 무작위로 비활성화하는 기법입니다. \n",
+ " - 비활성화된 노드의 효과는 **스케일링** $\\frac{1}{1-p}$을 통해 살아남은 노드에 보상하여 전체 효과를 유지합니다. \n",
+ "- Dropout의 **훈련 단계**와 **평가 단계**의 작동 방식은 다릅니다. \n",
+ " - **훈련 단계** (`model.train()`): 일부 노드만 활성화되며 다양한 노드 조합을 학습해 **특정 노드 의존도를 줄입니다**. \n",
+ " - **평가 단계** (`model.eval()`): 드롭아웃이 비활성화되어 **모든 노드**가 사용되며, 스케일링도 적용되지 않아 **일관된 출력**을 제공합니다. \n",
+ "> 이를 통해 모델은 **훈련 시 일반화 성능**을 높이고, **평가 시 안정적 결과**를 도출합니다. \n",
+ "\n",
+ " \n",
+ "\n",
+ "(Image Source = https://d2l.ai/_images/dropout2.svg)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "id": "EEvdln6Hsc_P"
+ },
+ "outputs": [],
+ "source": [
+ "### 모델링\n",
+ "## 힌트\n",
+ "# 입력층부터 출력층까지 선형층(Linear), ReLU 활성화 함수, 드롭아웃이 반복되는 구조\n",
+ "# 4개의 은닉층이 있으며 각 은닉층은 100개의 노드를 가짐\n",
+ "# dropout 기법으로 50% 확률로 노드를 비활성화함\n",
+ "\n",
+ "\n",
+ "model = nn.Sequential(\n",
+ " nn.Linear(64, 100),\n",
+ " nn.ReLU(),\n",
+ " nn.Dropout(p=0.5),\n",
+ "\n",
+ " nn.Linear(100, 100),\n",
+ " nn.ReLU(),\n",
+ " nn.Dropout(p=0.5),\n",
+ "\n",
+ " nn.Linear(100, 100),\n",
+ " nn.ReLU(),\n",
+ " nn.Dropout(p=0.5),\n",
+ "\n",
+ " nn.Linear(100, 100),\n",
+ " nn.ReLU(),\n",
+ " nn.Dropout(p=0.5),\n",
+ "\n",
+ " nn.Linear(100, 10),\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "id": "DnKElcoZsc_P"
+ },
+ "outputs": [],
+ "source": [
+ "### Settings\n",
+ "\n",
+ "ds = TensorDataset(X_train, Y_train)\n",
+ "loader = DataLoader(ds, batch_size=32, shuffle=True)\n",
+ "\n",
+ "lossFunc = nn.CrossEntropyLoss()\n",
+ "optimizer = optim.Adam(model.parameters())"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 467
+ },
+ "id": "DDwT5TBfsc_Q",
+ "outputId": "fac44372-b144-454b-8a96-8738bc8fc2f7"
+ },
+ "outputs": [
+ {
+ "output_type": "stream",
+ "name": "stderr",
+ "text": [
+ "100%|██████████| 100/100 [00:25<00:00, 3.96it/s]\n"
+ ]
+ },
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "execution_count": 5
+ },
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "