259 lines
74 KiB
Plaintext
259 lines
74 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Uczenie maszynowe – zastosowania\n",
|
||
"### Zajęcia laboratoryjne\n",
|
||
"# 10. Wprowadzenie do sieci neuronowych"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"Poniżej znajduje się implementacja prostej sieci neuronowej dla problemu klasyfikacji binarnej na przykładzie losowo wygenerowanego zestawu danych.\n",
|
||
"\n",
|
||
"W sieciach jednokierunkowych (ang. *feedforward*) wartości neuronów w $i$-tej warstwie są obliczane na podstawie wartości neuronów warstwy $i-1$. Mając daną $n$-warstwową sieć neuronową oraz jej parametry $\\Theta^{(1)}, \\ldots, \\Theta^{(n)} $ oraz $\\beta^{(1)}, \\ldots, \\beta^{(n)}$ liczymy: \n",
|
||
"$$a^{(i)} = g^{(i)}\\left( a^{(i-1)} \\Theta^{(i)} + \\beta^{(i)} \\right) \\; , $$\n",
|
||
"gdzie $g^{(i)}$ to tzw. **funkcje aktywacji**"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Zadanie 10"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Część podstawowa (4 punkty)\n",
|
||
"\n",
|
||
" * Zaimplementuj funkcję `accuracy()` liczącą skuteczność klasyfikacji.\n",
|
||
" * Za jej pomocą oblicz i wypisz końcową skuteczność klasyfikatora.\n",
|
||
" * Wypisuj również wartość `accuracy` podczas trenowania (przy okazji wypisywania wartości funkcji kosztu).\n",
|
||
" * Zbuduj sieci neuronowe dla różnych wielkości warstwy ukrytej (`dim_hid` = 1, 2, 5, 10, 25). Porównaj skuteczność tych modeli."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"### Część zaawansowana (3 punkty)\n",
|
||
"\n",
|
||
"Zastosuj poniższą implementację sieci neuronowej do klasyfikacji binarnej zbioru wygenerowanego za pomocą wybranej funkcji [sklearn.datasets](http://scikit-learn.org/stable/modules/classes.html#samples-generator). Ustal rozmiary warstw wejściowej ($n \\gt 2$) i ukrytej, dobierz odpowiednie parametry sieci (parametr $\\alpha$, liczba epok, wielkość warstwy ukrytej). Podaj skuteczność klasyfikacji."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"jupyter": {
|
||
"outputs_hidden": false
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"from sklearn import datasets\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"\n",
|
||
"\n",
|
||
"def generate_data():\n",
|
||
" # Keep results deterministic\n",
|
||
" np.random.seed(1234)\n",
|
||
" X, y = datasets.make_moons(200, noise=0.25)\n",
|
||
" # X, y = datasets.make_classification(200, 2, 2, 0)\n",
|
||
" return X, y\n",
|
||
"\n",
|
||
"def visualize(X, y, model=None):\n",
|
||
" x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5\n",
|
||
" y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5\n",
|
||
" h = 0.01\n",
|
||
" xx, yy = np.meshgrid(\n",
|
||
" np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n",
|
||
" if model:\n",
|
||
" Z = predict(model, np.c_[xx.ravel(), yy.ravel()])\n",
|
||
" Z = Z.reshape(xx.shape)\n",
|
||
" plt.contourf(xx, yy, Z, cmap=plt.cm.viridis)\n",
|
||
" plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.viridis)\n",
|
||
" plt.show()\n",
|
||
"\n",
|
||
"def initialize_model(dim_in=2, dim_hid=3, dim_out=2):\n",
|
||
" # Keep results deterministic\n",
|
||
" np.random.seed(1234)\n",
|
||
" W1 = np.random.randn(dim_in, dim_hid) / np.sqrt(dim_in)\n",
|
||
" b1 = np.zeros((1, dim_hid))\n",
|
||
" W2 = np.random.randn(dim_hid, dim_out) / np.sqrt(dim_hid)\n",
|
||
" b2 = np.zeros((1, dim_out))\n",
|
||
" return W1, b1, W2, b2\n",
|
||
"\n",
|
||
"def softmax(X):\n",
|
||
" e = np.exp(X)\n",
|
||
" return e / np.sum(e, axis=1, keepdims=True)\n",
|
||
"\n",
|
||
"def predict(model, X):\n",
|
||
" W1, b1, W2, b2 = model\n",
|
||
" z1 = X.dot(W1) + b1\n",
|
||
" a1 = np.tanh(z1)\n",
|
||
" z2 = a1.dot(W2) + b2\n",
|
||
" probs = softmax(z2)\n",
|
||
" return np.argmax(probs, axis=1)\n",
|
||
"\n",
|
||
"def calculate_cost(model, X, y):\n",
|
||
" W1, b1, W2, b2 = model\n",
|
||
" z1 = X.dot(W1) + b1\n",
|
||
" a1 = np.tanh(z1)\n",
|
||
" z2 = a1.dot(W2) + b2\n",
|
||
" probs = softmax(z2)\n",
|
||
" preds = probs[:, 1]\n",
|
||
" return -1. / len(y) * np.sum(\n",
|
||
" np.multiply(y, np.log(preds)) + np.multiply(1 - y, np.log(1 - preds)),\n",
|
||
" axis=0)\n",
|
||
"\n",
|
||
"def accuracy(model, X, y):\n",
|
||
" # TODO: Napisz funkcję obliczającą skuteczność.\n",
|
||
" pass\n",
|
||
"\n",
|
||
"def train(model, X, y, alpha=0.01, epochs=10000, debug=False):\n",
|
||
" W1, b1, W2, b2 = model\n",
|
||
" m = len(X)\n",
|
||
"\n",
|
||
" for i in range(epochs):\n",
|
||
" # Forward propagation\n",
|
||
" z1 = X.dot(W1) + b1\n",
|
||
" a1 = np.tanh(z1)\n",
|
||
" z2 = a1.dot(W2) + b2\n",
|
||
" probs = softmax(z2)\n",
|
||
"\n",
|
||
" # Backpropagation\n",
|
||
" delta3 = probs\n",
|
||
" delta3[range(m), y] -= 1\n",
|
||
" dW2 = (a1.T).dot(delta3)\n",
|
||
" db2 = np.sum(delta3, axis=0, keepdims=True)\n",
|
||
" delta2 = delta3.dot(W2.T) * (1 - np.power(a1, 2))\n",
|
||
" dW1 = np.dot(X.T, delta2)\n",
|
||
" db1 = np.sum(delta2, axis=0)\n",
|
||
"\n",
|
||
" # Parameter update\n",
|
||
" W1 -= alpha * dW1\n",
|
||
" b1 -= alpha * db1\n",
|
||
" W2 -= alpha * dW2\n",
|
||
" b2 -= alpha * db2\n",
|
||
"\n",
|
||
" # Print loss\n",
|
||
" if debug and i % 1000 == 0:\n",
|
||
" model = (W1, b1, W2, b2)\n",
|
||
" print(\"Cost after iteration {}: {:.4f}\".format(i, calculate_cost(\n",
|
||
" model, X, y)))\n",
|
||
" # TODO: Wypisz skuteczność (accuracy) klasyfikacji w tym miejscu\n",
|
||
"\n",
|
||
" return W1, b1, W2, b2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {
|
||
"jupyter": {
|
||
"outputs_hidden": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"X, y = generate_data()\n",
|
||
"visualize(X, y)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {
|
||
"jupyter": {
|
||
"outputs_hidden": false
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Cost after iteration 0: 0.4692\n",
|
||
"Cost after iteration 1000: 0.1527\n",
|
||
"Cost after iteration 2000: 0.1494\n",
|
||
"Cost after iteration 3000: 0.1478\n",
|
||
"Cost after iteration 4000: 0.1458\n",
|
||
"Cost after iteration 5000: 0.1444\n",
|
||
"Cost after iteration 6000: 0.1433\n",
|
||
"Cost after iteration 7000: 0.1423\n",
|
||
"Cost after iteration 8000: 0.1415\n",
|
||
"Cost after iteration 9000: 0.1407\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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\n",
|
||
"text/plain": [
|
||
"<Figure size 432x288 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {
|
||
"needs_background": "light"
|
||
},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"model = train(initialize_model(dim_hid=5), X, y, debug=True)\n",
|
||
"visualize(X, y, model)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"hide_input": false,
|
||
"kernelspec": {
|
||
"display_name": "Python 3",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.8.3"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|