-
Notifications
You must be signed in to change notification settings - Fork 4
/
Regularization.json
1221 lines (1221 loc) · 264 KB
/
Regularization.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Regularization\n",
"\n",
"Welcome to the second assignment of this week. Deep Learning models have so much flexibility and capacity that **overfitting can be a serious problem**, if the training dataset is not big enough. Sure it does well on the training set, but the learned network **doesn't generalize to new examples** that it has never seen!\n",
"\n",
"**You will learn to:** Use regularization in your deep learning models.\n",
"\n",
"Let's get started!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Table of Content\n",
"- [1 - Packages](#1)\n",
"- [2 - Problem Statement](#2)\n",
"- [3 - Loading the Dataset](#3)\n",
"- [4 - Non-Regularized Model](#4)\n",
"- [5 - L2 Regularization](#5)\n",
" - [Exercise 1 - compute_cost_with_regularization](#ex-1)\n",
" - [Exercise 2 - backward_propagation_with_regularization](#ex-2)\n",
"- [6 - Dropout](#6)\n",
" - [6.1 - Forward Propagation with Dropout](#6-1)\n",
" - [Exercise 3 - forward_propagation_with_dropout](#ex-3)\n",
" - [6.2 - Backward Propagation with Dropout](#6-2)\n",
" - [Exercise 4 - backward_propagation_with_dropout](#ex-4)\n",
"- [7 - Conclusions](#7)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name='1'></a>\n",
"## 1 - Packages"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# import packages\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import sklearn\n",
"import sklearn.datasets\n",
"import scipy.io\n",
"from reg_utils import sigmoid, relu, plot_decision_boundary, initialize_parameters, load_2D_dataset, predict_dec\n",
"from reg_utils import compute_cost, predict, forward_propagation, backward_propagation, update_parameters\n",
"from testCases import *\n",
"from public_tests import *\n",
"\n",
"%matplotlib inline\n",
"plt.rcParams['figure.figsize'] = (7.0, 4.0) # set default size of plots\n",
"plt.rcParams['image.interpolation'] = 'nearest'\n",
"plt.rcParams['image.cmap'] = 'gray'\n",
"\n",
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name='2'></a>\n",
"## 2 - Problem Statement"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You have just been hired as an AI expert by the French Football Corporation. They would like you to recommend positions where France's goal keeper should kick the ball so that the French team's players can then hit it with their head. \n",
"\n",
"<img src=\"images/field_kiank.png\" style=\"width:600px;height:350px;\">\n",
"<caption><center> <u> <b>Figure 1</b> </u>: <b>Football field</b><br> The goal keeper kicks the ball in the air, the players of each team are fighting to hit the ball with their head </center></caption>\n",
"\n",
"\n",
"They give you the following 2D dataset from France's past 10 games."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name='3'></a>\n",
"## 3 - Loading the Dataset"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"train_X, train_Y, test_X, test_Y = load_2D_dataset()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Each dot corresponds to a position on the football field where a football player has hit the ball with his/her head after the French goal keeper has shot the ball from the left side of the football field.\n",
"- If the dot is blue, it means the French player managed to hit the ball with his/her head\n",
"- If the dot is red, it means the other team's player hit the ball with their head\n",
"\n",
"**Your goal**: Use a deep learning model to find the positions on the field where the goalkeeper should kick the ball."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Analysis of the dataset**: This dataset is a little noisy, but it looks like a diagonal line separating the upper left half (blue) from the lower right half (red) would work well. \n",
"\n",
"You will first try a non-regularized model. Then you'll learn how to regularize it and decide which model you will choose to solve the French Football Corporation's problem. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name='4'></a>\n",
"## 4 - Non-Regularized Model\n",
"\n",
"You will use the following neural network (already implemented for you below). This model can be used:\n",
"- in *regularization mode* -- by setting the `lambd` input to a non-zero value. We use \"`lambd`\" instead of \"`lambda`\" because \"`lambda`\" is a reserved keyword in Python. \n",
"- in *dropout mode* -- by setting the `keep_prob` to a value less than one\n",
"\n",
"You will first try the model without any regularization. Then, you will implement:\n",
"- *L2 regularization* -- functions: \"`compute_cost_with_regularization()`\" and \"`backward_propagation_with_regularization()`\"\n",
"- *Dropout* -- functions: \"`forward_propagation_with_dropout()`\" and \"`backward_propagation_with_dropout()`\"\n",
"\n",
"In each part, you will run this model with the correct inputs so that it calls the functions you've implemented. Take a look at the code below to familiarize yourself with the model."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"def model(X, Y, learning_rate = 0.3, num_iterations = 30000, print_cost = True, lambd = 0, keep_prob = 1):\n",
" \"\"\"\n",
" Implements a three-layer neural network: LINEAR->RELU->LINEAR->RELU->LINEAR->SIGMOID.\n",
" \n",
" Arguments:\n",
" X -- input data, of shape (input size, number of examples)\n",
" Y -- true \"label\" vector (1 for blue dot / 0 for red dot), of shape (output size, number of examples)\n",
" learning_rate -- learning rate of the optimization\n",
" num_iterations -- number of iterations of the optimization loop\n",
" print_cost -- If True, print the cost every 10000 iterations\n",
" lambd -- regularization hyperparameter, scalar\n",
" keep_prob - probability of keeping a neuron active during drop-out, scalar.\n",
" \n",
" Returns:\n",
" parameters -- parameters learned by the model. They can then be used to predict.\n",
" \"\"\"\n",
" \n",
" grads = {}\n",
" costs = [] # to keep track of the cost\n",
" m = X.shape[1] # number of examples\n",
" layers_dims = [X.shape[0], 20, 3, 1]\n",
" \n",
" # Initialize parameters dictionary.\n",
" parameters = initialize_parameters(layers_dims)\n",
"\n",
" # Loop (gradient descent)\n",
"\n",
" for i in range(0, num_iterations):\n",
"\n",
" # Forward propagation: LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SIGMOID.\n",
" if keep_prob == 1:\n",
" a3, cache = forward_propagation(X, parameters)\n",
" elif keep_prob < 1:\n",
" a3, cache = forward_propagation_with_dropout(X, parameters, keep_prob)\n",
" \n",
" # Cost function\n",
" if lambd == 0:\n",
" cost = compute_cost(a3, Y)\n",
" else:\n",
" cost = compute_cost_with_regularization(a3, Y, parameters, lambd)\n",
" \n",
" # Backward propagation.\n",
" assert (lambd == 0 or keep_prob == 1) # it is possible to use both L2 regularization and dropout, \n",
" # but this assignment will only explore one at a time\n",
" if lambd == 0 and keep_prob == 1:\n",
" grads = backward_propagation(X, Y, cache)\n",
" elif lambd != 0:\n",
" grads = backward_propagation_with_regularization(X, Y, cache, lambd)\n",
" elif keep_prob < 1:\n",
" grads = backward_propagation_with_dropout(X, Y, cache, keep_prob)\n",
" \n",
" # Update parameters.\n",
" parameters = update_parameters(parameters, grads, learning_rate)\n",
" \n",
" # Print the loss every 10000 iterations\n",
" if print_cost and i % 10000 == 0:\n",
" print(\"Cost after iteration {}: {}\".format(i, cost))\n",
" if print_cost and i % 1000 == 0:\n",
" costs.append(cost)\n",
" \n",
" # plot the cost\n",
" plt.plot(costs)\n",
" plt.ylabel('cost')\n",
" plt.xlabel('iterations (x1,000)')\n",
" plt.title(\"Learning rate =\" + str(learning_rate))\n",
" plt.show()\n",
" \n",
" return parameters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's train the model without any regularization, and observe the accuracy on the train/test sets."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cost after iteration 0: 0.6557412523481002\n",
"Cost after iteration 10000: 0.16329987525724204\n",
"Cost after iteration 20000: 0.13851642423234922\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"On the training set:\n",
"Accuracy: 0.9478672985781991\n",
"On the test set:\n",
"Accuracy: 0.915\n"
]
}
],
"source": [
"parameters = model(train_X, train_Y)\n",
"print (\"On the training set:\")\n",
"predictions_train = predict(train_X, train_Y, parameters)\n",
"print (\"On the test set:\")\n",
"predictions_test = predict(test_X, test_Y, parameters)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The train accuracy is 94.8% while the test accuracy is 91.5%. This is the **baseline model** (you will observe the impact of regularization on this model). Run the following code to plot the decision boundary of your model."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.title(\"Model without regularization\")\n",
"axes = plt.gca()\n",
"axes.set_xlim([-0.75,0.40])\n",
"axes.set_ylim([-0.75,0.65])\n",
"plot_decision_boundary(lambda x: predict_dec(parameters, x.T), train_X, train_Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The non-regularized model is obviously overfitting the training set. It is fitting the noisy points! Lets now look at two techniques to reduce overfitting."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name='5'></a>\n",
"## 5 - L2 Regularization\n",
"\n",
"The standard way to avoid overfitting is called **L2 regularization**. It consists of appropriately modifying your cost function, from:\n",
"$$J = -\\frac{1}{m} \\sum\\limits_{i = 1}^{m} \\large{(}\\small y^{(i)}\\log\\left(a^{[L](i)}\\right) + (1-y^{(i)})\\log\\left(1- a^{[L](i)}\\right) \\large{)} \\tag{1}$$\n",
"To:\n",
"$$J_{regularized} = \\small \\underbrace{-\\frac{1}{m} \\sum\\limits_{i = 1}^{m} \\large{(}\\small y^{(i)}\\log\\left(a^{[L](i)}\\right) + (1-y^{(i)})\\log\\left(1- a^{[L](i)}\\right) \\large{)} }_\\text{cross-entropy cost} + \\underbrace{\\frac{1}{m} \\frac{\\lambda}{2} \\sum\\limits_l\\sum\\limits_k\\sum\\limits_j W_{k,j}^{[l]2} }_\\text{L2 regularization cost} \\tag{2}$$\n",
"\n",
"Let's modify your cost and observe the consequences.\n",
"\n",
"<a name='ex-1'></a>\n",
"### Exercise 1 - compute_cost_with_regularization\n",
"Implement `compute_cost_with_regularization()` which computes the cost given by formula (2). To calculate $\\sum\\limits_k\\sum\\limits_j W_{k,j}^{[l]2}$ , use :\n",
"```python\n",
"np.sum(np.square(Wl))\n",
"```\n",
"Note that you have to do this for $W^{[1]}$, $W^{[2]}$ and $W^{[3]}$, then sum the three terms and multiply by $ \\frac{1}{m} \\frac{\\lambda}{2} $."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"deletable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "88e54417c158ef5260e3107ab846463e",
"grade": false,
"grade_id": "cell-02a896d283f479aa",
"locked": false,
"schema_version": 3,
"solution": true,
"task": false
}
},
"outputs": [],
"source": [
"# GRADED FUNCTION: compute_cost_with_regularization\n",
"\n",
"def compute_cost_with_regularization(A3, Y, parameters, lambd):\n",
" \"\"\"\n",
" Implement the cost function with L2 regularization. See formula (2) above.\n",
" \n",
" Arguments:\n",
" A3 -- post-activation, output of forward propagation, of shape (output size, number of examples)\n",
" Y -- \"true\" labels vector, of shape (output size, number of examples)\n",
" parameters -- python dictionary containing parameters of the model\n",
" \n",
" Returns:\n",
" cost - value of the regularized loss function (formula (2))\n",
" \"\"\"\n",
" m = Y.shape[1]\n",
" W1 = parameters[\"W1\"]\n",
" W2 = parameters[\"W2\"]\n",
" W3 = parameters[\"W3\"]\n",
" \n",
" cross_entropy_cost = compute_cost(A3, Y) # This gives you the cross-entropy part of the cost\n",
" \n",
" #(≈ 1 lines of code)\n",
" # L2_regularization_cost = \n",
" # YOUR CODE STARTS HERE\n",
" L2_regularization_cost = (lambd/(2*m))*(np.sum(np.square(W1))+np.sum(np.square(W2))+np.sum(np.square(W3)))\n",
" \n",
" # YOUR CODE ENDS HERE\n",
" \n",
" cost = cross_entropy_cost + L2_regularization_cost\n",
" \n",
" return cost"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "c8efc715a4d6127a214a1b9f97e9f4cb",
"grade": true,
"grade_id": "cell-8a99b24d8ecfe0c3",
"locked": true,
"points": 10,
"schema_version": 3,
"solution": false,
"task": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cost = 1.7864859451590758\n",
"\u001b[92m All tests passed.\n"
]
}
],
"source": [
"A3, t_Y, parameters = compute_cost_with_regularization_test_case()\n",
"cost = compute_cost_with_regularization(A3, t_Y, parameters, lambd=0.1)\n",
"print(\"cost = \" + str(cost))\n",
"\n",
"compute_cost_with_regularization_test(compute_cost_with_regularization)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Of course, because you changed the cost, you have to change backward propagation as well! All the gradients have to be computed with respect to this new cost. \n",
"\n",
"<a name='ex-2'></a>\n",
"### Exercise 2 - backward_propagation_with_regularization\n",
"Implement the changes needed in backward propagation to take into account regularization. The changes only concern dW1, dW2 and dW3. For each, you have to add the regularization term's gradient ($\\frac{d}{dW} ( \\frac{1}{2}\\frac{\\lambda}{m} W^2) = \\frac{\\lambda}{m} W$)."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"deletable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "eb2dfa385aa47fe2e2edf5c6821618e6",
"grade": false,
"grade_id": "cell-c6f6ed3630e04d4b",
"locked": false,
"schema_version": 3,
"solution": true,
"task": false
}
},
"outputs": [],
"source": [
"# GRADED FUNCTION: backward_propagation_with_regularization\n",
"\n",
"def backward_propagation_with_regularization(X, Y, cache, lambd):\n",
" \"\"\"\n",
" Implements the backward propagation of our baseline model to which we added an L2 regularization.\n",
" \n",
" Arguments:\n",
" X -- input dataset, of shape (input size, number of examples)\n",
" Y -- \"true\" labels vector, of shape (output size, number of examples)\n",
" cache -- cache output from forward_propagation()\n",
" lambd -- regularization hyperparameter, scalar\n",
" \n",
" Returns:\n",
" gradients -- A dictionary with the gradients with respect to each parameter, activation and pre-activation variables\n",
" \"\"\"\n",
" \n",
" m = X.shape[1]\n",
" (Z1, A1, W1, b1, Z2, A2, W2, b2, Z3, A3, W3, b3) = cache\n",
" \n",
" dZ3 = A3 - Y\n",
" #(≈ 1 lines of code)\n",
" # dW3 = 1./m * np.dot(dZ3, A2.T) + None\n",
" # YOUR CODE STARTS HERE\n",
" dW3 = 1./m * np.dot(dZ3, A2.T) + (lambd/m)*W3\n",
" \n",
" # YOUR CODE ENDS HERE\n",
" db3 = 1. / m * np.sum(dZ3, axis=1, keepdims=True)\n",
" \n",
" dA2 = np.dot(W3.T, dZ3)\n",
" dZ2 = np.multiply(dA2, np.int64(A2 > 0))\n",
" #(≈ 1 lines of code)\n",
" # dW2 = 1./m * np.dot(dZ2, A1.T) + None\n",
" # YOUR CODE STARTS HERE\n",
" dW2 = 1./m * np.dot(dZ2, A1.T) + (lambd/m)*W2\n",
" \n",
" # YOUR CODE ENDS HERE\n",
" db2 = 1. / m * np.sum(dZ2, axis=1, keepdims=True)\n",
" \n",
" dA1 = np.dot(W2.T, dZ2)\n",
" dZ1 = np.multiply(dA1, np.int64(A1 > 0))\n",
" #(≈ 1 lines of code)\n",
" # dW1 = 1./m * np.dot(dZ1, X.T) + None\n",
" # YOUR CODE STARTS HERE\n",
" \n",
" dW1 = 1./m * np.dot(dZ1, X.T) + (lambd/m)*W1\n",
" # YOUR CODE ENDS HERE\n",
" db1 = 1. / m * np.sum(dZ1, axis=1, keepdims=True)\n",
" \n",
" gradients = {\"dZ3\": dZ3, \"dW3\": dW3, \"db3\": db3,\"dA2\": dA2,\n",
" \"dZ2\": dZ2, \"dW2\": dW2, \"db2\": db2, \"dA1\": dA1, \n",
" \"dZ1\": dZ1, \"dW1\": dW1, \"db1\": db1}\n",
" \n",
" return gradients"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "bd8e0024ad54c2facd2fb8e11d21d2a0",
"grade": true,
"grade_id": "cell-9826510f7bfdd0f8",
"locked": true,
"points": 10,
"schema_version": 3,
"solution": false,
"task": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dW1 = \n",
"[[-0.25604646 0.12298827 -0.28297129]\n",
" [-0.17706303 0.34536094 -0.4410571 ]]\n",
"dW2 = \n",
"[[ 0.79276486 0.85133918]\n",
" [-0.0957219 -0.01720463]\n",
" [-0.13100772 -0.03750433]]\n",
"dW3 = \n",
"[[-1.77691347 -0.11832879 -0.09397446]]\n",
"\u001b[92m All tests passed.\n"
]
}
],
"source": [
"t_X, t_Y, cache = backward_propagation_with_regularization_test_case()\n",
"\n",
"grads = backward_propagation_with_regularization(t_X, t_Y, cache, lambd = 0.7)\n",
"print (\"dW1 = \\n\"+ str(grads[\"dW1\"]))\n",
"print (\"dW2 = \\n\"+ str(grads[\"dW2\"]))\n",
"print (\"dW3 = \\n\"+ str(grads[\"dW3\"]))\n",
"backward_propagation_with_regularization_test(backward_propagation_with_regularization)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's now run the model with L2 regularization $(\\lambda = 0.7)$. The `model()` function will call: \n",
"- `compute_cost_with_regularization` instead of `compute_cost`\n",
"- `backward_propagation_with_regularization` instead of `backward_propagation`"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Cost after iteration 0: 0.6974484493131264\n",
"Cost after iteration 10000: 0.2684918873282238\n",
"Cost after iteration 20000: 0.26809163371273004\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"On the train set:\n",
"Accuracy: 0.9383886255924171\n",
"On the test set:\n",
"Accuracy: 0.93\n"
]
}
],
"source": [
"parameters = model(train_X, train_Y, lambd = 0.7)\n",
"print (\"On the train set:\")\n",
"predictions_train = predict(train_X, train_Y, parameters)\n",
"print (\"On the test set:\")\n",
"predictions_test = predict(test_X, test_Y, parameters)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Congrats, the test set accuracy increased to 93%. You have saved the French football team!\n",
"\n",
"You are not overfitting the training data anymore. Let's plot the decision boundary."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.title(\"Model with L2-regularization\")\n",
"axes = plt.gca()\n",
"axes.set_xlim([-0.75,0.40])\n",
"axes.set_ylim([-0.75,0.65])\n",
"plot_decision_boundary(lambda x: predict_dec(parameters, x.T), train_X, train_Y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Observations**:\n",
"- The value of $\\lambda$ is a hyperparameter that you can tune using a dev set.\n",
"- L2 regularization makes your decision boundary smoother. If $\\lambda$ is too large, it is also possible to \"oversmooth\", resulting in a model with high bias.\n",
"\n",
"**What is L2-regularization actually doing?**:\n",
"\n",
"L2-regularization relies on the assumption that a model with small weights is simpler than a model with large weights. Thus, by penalizing the square values of the weights in the cost function you drive all the weights to smaller values. It becomes too costly for the cost to have large weights! This leads to a smoother model in which the output changes more slowly as the input changes. \n",
"\n",
"<br>\n",
"<font color='blue'>\n",
" \n",
"**What you should remember:** the implications of L2-regularization on:\n",
"- The cost computation:\n",
" - A regularization term is added to the cost.\n",
"- The backpropagation function:\n",
" - There are extra terms in the gradients with respect to weight matrices.\n",
"- Weights end up smaller (\"weight decay\"): \n",
" - Weights are pushed to smaller values."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name='6'></a>\n",
"## 6 - Dropout\n",
"\n",
"Finally, **dropout** is a widely used regularization technique that is specific to deep learning. \n",
"**It randomly shuts down some neurons in each iteration.** Watch these two videos to see what this means!\n",
"\n",
"<!--\n",
"To understand drop-out, consider this conversation with a friend:\n",
"- Friend: \"Why do you need all these neurons to train your network and classify images?\". \n",
"- You: \"Because each neuron contains a weight and can learn specific features/details/shape of an image. The more neurons I have, the more featurse my model learns!\"\n",
"- Friend: \"I see, but are you sure that your neurons are learning different features and not all the same features?\"\n",
"- You: \"Good point... Neurons in the same layer actually don't talk to each other. It should be definitly possible that they learn the same image features/shapes/forms/details... which would be redundant. There should be a solution.\"\n",
"!--> \n",
"\n",
"\n",
"<center>\n",
"<video width=\"620\" height=\"440\" src=\"images/dropout1_kiank.mp4\" type=\"video/mp4\" controls>\n",
"</video>\n",
"</center>\n",
"<br>\n",
"<caption><center> <u> <b>Figure 2 </b></u>: <b>Drop-out on the second hidden layer.</b> <br> At each iteration, you shut down (= set to zero) each neuron of a layer with probability $1 - keep\\_prob$ or keep it with probability $keep\\_prob$ (50% here). The dropped neurons don't contribute to the training in both the forward and backward propagations of the iteration. </center></caption>\n",
"\n",
"<center>\n",
"<video width=\"620\" height=\"440\" src=\"images/dropout2_kiank.mp4\" type=\"video/mp4\" controls>\n",
"</video>\n",
"</center>\n",
"\n",
"<caption><center> <u> <b>Figure 3</b> </u>:<b> Drop-out on the first and third hidden layers. </b><br> $1^{st}$ layer: we shut down on average 40% of the neurons. $3^{rd}$ layer: we shut down on average 20% of the neurons. </center></caption>\n",
"\n",
"\n",
"When you shut some neurons down, you actually modify your model. The idea behind drop-out is that at each iteration, you train a different model that uses only a subset of your neurons. With dropout, your neurons thus become less sensitive to the activation of one other specific neuron, because that other neuron might be shut down at any time. \n",
"\n",
"<a name='6-1'></a>\n",
"### 6.1 - Forward Propagation with Dropout\n",
"\n",
"<a name='ex-3'></a>\n",
"### Exercise 3 - forward_propagation_with_dropout\n",
"\n",
"Implement the forward propagation with dropout. You are using a 3 layer neural network, and will add dropout to the first and second hidden layers. We will not apply dropout to the input layer or output layer. \n",
"\n",
"**Instructions**:\n",
"You would like to shut down some neurons in the first and second layers. To do that, you are going to carry out 4 Steps:\n",
"1. In lecture, we dicussed creating a variable $d^{[1]}$ with the same shape as $a^{[1]}$ using `np.random.rand()` to randomly get numbers between 0 and 1. Here, you will use a vectorized implementation, so create a random matrix $D^{[1]} = [d^{[1](1)} d^{[1](2)} ... d^{[1](m)}] $ of the same dimension as $A^{[1]}$.\n",
"2. Set each entry of $D^{[1]}$ to be 1 with probability (`keep_prob`), and 0 otherwise.\n",
"\n",
"**Hint:** Let's say that keep_prob = 0.8, which means that we want to keep about 80% of the neurons and drop out about 20% of them. We want to generate a vector that has 1's and 0's, where about 80% of them are 1 and about 20% are 0.\n",
"This python statement: \n",
"`X = (X < keep_prob).astype(int)` \n",
"\n",
"is conceptually the same as this if-else statement (for the simple case of a one-dimensional array) :\n",
"\n",
"```\n",
"for i,v in enumerate(x):\n",
" if v < keep_prob:\n",
" x[i] = 1\n",
" else: # v >= keep_prob\n",
" x[i] = 0\n",
"```\n",
"Note that the `X = (X < keep_prob).astype(int)` works with multi-dimensional arrays, and the resulting output preserves the dimensions of the input array.\n",
"\n",
"Also note that without using `.astype(int)`, the result is an array of booleans `True` and `False`, which Python automatically converts to 1 and 0 if we multiply it with numbers. (However, it's better practice to convert data into the data type that we intend, so try using `.astype(int)`.)\n",
"\n",
"3. Set $A^{[1]}$ to $A^{[1]} * D^{[1]}$. (You are shutting down some neurons). You can think of $D^{[1]}$ as a mask, so that when it is multiplied with another matrix, it shuts down some of the values.\n",
"4. Divide $A^{[1]}$ by `keep_prob`. By doing this you are assuring that the result of the cost will still have the same expected value as without drop-out. (This technique is also called inverted dropout.)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"deletable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "249ddfb0abac7c799948d3e600db7a4c",
"grade": false,
"grade_id": "cell-a81658747a0683be",
"locked": false,
"schema_version": 3,
"solution": true,
"task": false
}
},
"outputs": [],
"source": [
"# GRADED FUNCTION: forward_propagation_with_dropout\n",
"\n",
"def forward_propagation_with_dropout(X, parameters, keep_prob = 0.5):\n",
" \"\"\"\n",
" Implements the forward propagation: LINEAR -> RELU + DROPOUT -> LINEAR -> RELU + DROPOUT -> LINEAR -> SIGMOID.\n",
" \n",
" Arguments:\n",
" X -- input dataset, of shape (2, number of examples)\n",
" parameters -- python dictionary containing your parameters \"W1\", \"b1\", \"W2\", \"b2\", \"W3\", \"b3\":\n",
" W1 -- weight matrix of shape (20, 2)\n",
" b1 -- bias vector of shape (20, 1)\n",
" W2 -- weight matrix of shape (3, 20)\n",
" b2 -- bias vector of shape (3, 1)\n",
" W3 -- weight matrix of shape (1, 3)\n",
" b3 -- bias vector of shape (1, 1)\n",
" keep_prob - probability of keeping a neuron active during drop-out, scalar\n",
" \n",
" Returns:\n",
" A3 -- last activation value, output of the forward propagation, of shape (1,1)\n",
" cache -- tuple, information stored for computing the backward propagation\n",
" \"\"\"\n",
" \n",
" np.random.seed(1)\n",
" \n",
" # retrieve parameters\n",
" W1 = parameters[\"W1\"]\n",
" b1 = parameters[\"b1\"]\n",
" W2 = parameters[\"W2\"]\n",
" b2 = parameters[\"b2\"]\n",
" W3 = parameters[\"W3\"]\n",
" b3 = parameters[\"b3\"]\n",
" \n",
" # LINEAR -> RELU -> LINEAR -> RELU -> LINEAR -> SIGMOID\n",
" Z1 = np.dot(W1, X) + b1\n",
" A1 = relu(Z1)\n",
" #(≈ 4 lines of code) # Steps 1-4 below correspond to the Steps 1-4 described above. \n",
" \n",
" # YOUR CODE STARTS HERE\n",
" D1 = np.random.rand(A1.shape[0],A1.shape[1]) # Step 1: initialize matrix D1 = np.random.rand(..., ...)\n",
" D1 = (D1<keep_prob) # Step 2: convert entries of D1 to 0 or 1 (using keep_prob as the threshold)\n",
" A1 = np.multiply(A1,D1) # Step 3: shut down some neurons of A1\n",
" A1 = A1/keep_prob # Step 4: scale the value of neurons that haven't been shut down\n",
" \n",
" # YOUR CODE ENDS HERE\n",
" Z2 = np.dot(W2, A1) + b2\n",
" A2 = relu(Z2)\n",
" #(≈ 4 lines of code)\n",
" D2 = np.random.rand(A2.shape[0],A2.shape[1]) # Step 1: initialize matrix D2 = np.random.rand(..., ...)\n",
" D2 = (D2<keep_prob) # Step 2: convert entries of D2 to 0 or 1 (using keep_prob as the threshold)\n",
" A2 = np.multiply(A2,D2) # Step 3: shut down some neurons of A2\n",
" A2 = A2/keep_prob # Step 4: scale the value of neurons that haven't been shut down\n",
" # YOUR CODE STARTS HERE\n",
" \n",
" \n",
" # YOUR CODE ENDS HERE\n",
" Z3 = np.dot(W3, A2) + b3\n",
" A3 = sigmoid(Z3)\n",
" \n",
" cache = (Z1, D1, A1, W1, b1, Z2, D2, A2, W2, b2, Z3, A3, W3, b3)\n",
" \n",
" return A3, cache"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "caec66931ac05dbe474596e75f3a14cd",
"grade": true,
"grade_id": "cell-be6195c629f586bf",
"locked": true,
"points": 20,
"schema_version": 3,
"solution": false,
"task": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A3 = [[0.36974721 0.00305176 0.04565099 0.49683389 0.36974721]]\n",
"\u001b[92m All tests passed.\n"
]
}
],
"source": [
"t_X, parameters = forward_propagation_with_dropout_test_case()\n",
"\n",
"A3, cache = forward_propagation_with_dropout(t_X, parameters, keep_prob=0.7)\n",
"print (\"A3 = \" + str(A3))\n",
"\n",
"forward_propagation_with_dropout_test(forward_propagation_with_dropout)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a name='6-2'></a>\n",
"### 6.2 - Backward Propagation with Dropout\n",
"\n",
"<a name='ex-4'></a>\n",
"### Exercise 4 - backward_propagation_with_dropout\n",
"Implement the backward propagation with dropout. As before, you are training a 3 layer network. Add dropout to the first and second hidden layers, using the masks $D^{[1]}$ and $D^{[2]}$ stored in the cache. \n",
"\n",
"**Instruction**:\n",
"Backpropagation with dropout is actually quite easy. You will have to carry out 2 Steps:\n",
"1. You had previously shut down some neurons during forward propagation, by applying a mask $D^{[1]}$ to `A1`. In backpropagation, you will have to shut down the same neurons, by reapplying the same mask $D^{[1]}$ to `dA1`. \n",
"2. During forward propagation, you had divided `A1` by `keep_prob`. In backpropagation, you'll therefore have to divide `dA1` by `keep_prob` again (the calculus interpretation is that if $A^{[1]}$ is scaled by `keep_prob`, then its derivative $dA^{[1]}$ is also scaled by the same `keep_prob`).\n"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"deletable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "ee4145889a9c078fcf6aef51aceb3ba9",
"grade": false,
"grade_id": "cell-5b97731b540b0b87",
"locked": false,
"schema_version": 3,
"solution": true,
"task": false
}
},
"outputs": [],
"source": [
"# GRADED FUNCTION: backward_propagation_with_dropout\n",
"\n",
"def backward_propagation_with_dropout(X, Y, cache, keep_prob):\n",
" \"\"\"\n",
" Implements the backward propagation of our baseline model to which we added dropout.\n",
" \n",
" Arguments:\n",
" X -- input dataset, of shape (2, number of examples)\n",
" Y -- \"true\" labels vector, of shape (output size, number of examples)\n",
" cache -- cache output from forward_propagation_with_dropout()\n",
" keep_prob - probability of keeping a neuron active during drop-out, scalar\n",
" \n",
" Returns:\n",
" gradients -- A dictionary with the gradients with respect to each parameter, activation and pre-activation variables\n",
" \"\"\"\n",
" \n",
" m = X.shape[1]\n",
" (Z1, D1, A1, W1, b1, Z2, D2, A2, W2, b2, Z3, A3, W3, b3) = cache\n",
" \n",
" dZ3 = A3 - Y\n",
" dW3 = 1./m * np.dot(dZ3, A2.T)\n",
" db3 = 1./m * np.sum(dZ3, axis=1, keepdims=True)\n",
" dA2 = np.dot(W3.T, dZ3)\n",
" #(≈ 2 lines of code)\n",
" \n",
" # YOUR CODE STARTS HERE\n",
" dA2 = np.multiply(dA2,D2)# Step 1: Apply mask D2 to shut down the same neurons as during the forward propagation\n",
" dA2 = dA2/keep_prob # Step 2: Scale the value of neurons that haven't been shut down\n",
" \n",
" # YOUR CODE ENDS HERE\n",
" dZ2 = np.multiply(dA2, np.int64(A2 > 0))\n",
" dW2 = 1./m * np.dot(dZ2, A1.T)\n",
" db2 = 1./m * np.sum(dZ2, axis=1, keepdims=True)\n",
" \n",
" dA1 = np.dot(W2.T, dZ2)\n",
" #(≈ 2 lines of code)\n",
" \n",
" # YOUR CODE STARTS HERE\n",
" dA1 = np.multiply(dA1,D1)# Step 1: Apply mask D1 to shut down the same neurons as during the forward propagation\n",
" dA1 = dA1/keep_prob # Step 2: Scale the value of neurons that haven't been shut down\n",
" \n",
" # YOUR CODE ENDS HERE\n",
" dZ1 = np.multiply(dA1, np.int64(A1 > 0))\n",
" dW1 = 1./m * np.dot(dZ1, X.T)\n",
" db1 = 1./m * np.sum(dZ1, axis=1, keepdims=True)\n",
" \n",
" gradients = {\"dZ3\": dZ3, \"dW3\": dW3, \"db3\": db3,\"dA2\": dA2,\n",
" \"dZ2\": dZ2, \"dW2\": dW2, \"db2\": db2, \"dA1\": dA1, \n",
" \"dZ1\": dZ1, \"dW1\": dW1, \"db1\": db1}\n",
" \n",
" return gradients"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"deletable": false,
"editable": false,
"nbgrader": {
"cell_type": "code",
"checksum": "c30bb7a9f59c7d421c8627d5d9252b29",
"grade": true,
"grade_id": "cell-958c189ce5b16569",
"locked": true,
"points": 10,
"schema_version": 3,
"solution": false,
"task": false
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dA1 = \n",
"[[ 0.36544439 0. -0.00188233 0. -0.17408748]\n",
" [ 0.65515713 0. -0.00337459 0. -0. ]]\n",
"dA2 = \n",
"[[ 0.58180856 0. -0.00299679 0. -0.27715731]\n",
" [ 0. 0.53159854 -0. 0.53159854 -0.34089673]\n",
" [ 0. 0. -0.00292733 0. -0. ]]\n",
"\u001b[92m All tests passed.\n"
]
}
],
"source": [
"t_X, t_Y, cache = backward_propagation_with_dropout_test_case()\n",
"\n",
"gradients = backward_propagation_with_dropout(t_X, t_Y, cache, keep_prob=0.8)\n",
"\n",
"print (\"dA1 = \\n\" + str(gradients[\"dA1\"]))\n",
"print (\"dA2 = \\n\" + str(gradients[\"dA2\"]))\n",
"\n",
"backward_propagation_with_dropout_test(backward_propagation_with_dropout)"
]
},