lecture_4_part_one
السلام عليكم يا شباب تعالوا بقى نعمل lecture 4 طيب مبدئين lecture 4 فاول حاجة كدا بنتكلم فيها احنا هنكمل كلام احنا اخر حاجة كنا اتكلمنا عنها كنا اتكلمنا عن ال overfitting وال underfitting والكلام دا كله طيب هو بقى بيتكلم عن احنا اي data بنقسمها ل train وtest اللى هى بنعملها بfunction اسمها train test
طيب حلوة هو بيتكلم المفروض بقى النسب قد ايه يعني انا أ train  بقد ايه وأtest بقد ايه فجايب لنا تلات امثلة اول مثال ال training set صغيرة والtest set كبيرة قوي هل دي كويسة اكيد لا
ده وحش جدا ليه وحشة علشان الtraining too few انت مدتلوش data يtrain عليها بشكل كافي فهو كده بالتالي poorly estimated كده يحصل له underfitting  بالظبط يحصل له underfitting ليه لانه هو متعلمش كويس وبالتالي مش هي generalize
طيب هنا انا عندي training set كبيرة قوي وtest set  صغيرة قوي هل ده كويس؟ لا مش كويس ليه؟ هو على قد ما هو اتعلم كويس على قد ما هو فهم المنهح كويس ولكن هو في الtest  الtest  هنا صغير فغير معبر عن الدا
فيحصل له مشكلة في الgeneralization انت مش عارف هو اصلا عمل generalization ولا لا ليه؟ علشان انت بtestو بحبة صغيرين جدا غير معبرين عن بقية الdata وبالتالي مش generalized  اومال ايه الافضل؟ الافضل الاعتدال الاعتدال في كل حاجة كويس الtraining سي...
تبقى حوالي 80% 80% من الdata وtest set حوالي 20% من الdata ده هيديك better estimate  هتقدر تgeneralize  بشكل احسن تمام في بقى طرق تانية بتساعد اكتر على ان انت تtrain وفي نفس الوقت تtest بشكل احسن
وهي ال cross validation ودي هنتكلم عنها قدام شوية بس انا هديك شوية hints كده خدها عندك في دماغك لحد ما نجلها. ال cross validation بستخدمه لما علشان امنع ال over fitting ولما تبقى الdata عندي صغيرة. بس احفظ دول لحد ما نجلهم. طيب اه هنا بقى summary ده بيراجع بيقول لك اني انا با select الmodel تاخد بالك من الmodel complexity انها لو زادت جدا ايه اللي بيحصل over fitting لو قلت
underfitting. آآ وبختار ان هو يبقى generalized. تمام? وبقسم الdata لtraining set  وtesting set. وبقعد اغير في الhyperparameter وعمل حاجة اسمها hyperparameter tuning. بtune الhyperparameters. يعني انا بيعندي hyperparameters ايه هو ايه الhyperparameter?
بالظبط الحاجة اللي باخد فيها رأيك. طيب بقى تغير فيها زي اول assignment خدناه فى ال machine learning  في ده احنا قعدنا نغير فى ال epochs نغير فى ال learning rate قعدنا نلعب كده في الhyperparameters ونشوف انهى احسن. ده اسمه  hyperparameter tunning تمام? طيب. بيقول لك بقى ان في ال practical implementation هم بيعملوا 2 testing sets يعني بيعملوا ايه بيقسموها training set
وvalidation set وtest set الحقيقة ان احنا بنعمل كده في deep learning مش في الماشين learning طب اشمعنى بنعمل كده في deep learning والله عشان deep learning بقى معنا data زيادة فانت معك data كتير فاقدر أtrain بيها وأvalidate وأtest ايه الفرق بقى ان الvalidation دي انا بtest الmodel
اثناء ما هو بrun. طب الtest set لا بعد ما نخلص. يعني ايه? يعني انا دلوقتي بعمل اه انا دلوقتي عندي الdata عندي training set. انا بعمل ايه? نفترض ان انا بلف 100 epoch. لما انا كنت بقسم الdata بتاعتي train وtest بس.
فهو كان بيلف ال100 epoch ويخلص بعد كده يشوف الtest كم في المية. طب اما لما قسمتها training  وvalidation وtest بقى بيعمل ايه? والله بقى بعد ما بيخلص epoch واحدة بس من الtrain بقى بيvalidate ويطلع يلف على الvalidation set ويطلع لك accuracy ويلف الepoch التانية وهكذا. يلف ال100 مرة
فيبقى كده بقى احسن ليه؟ علشان هو كده بيحسن مع كل مرة بيvalidate فيها مش محتاج يلف في ال100 epoch علشان خاطر يvalidate لا ده بيلف  epoch epoch  كل epoch 1 على اساسها بيبدأ يvalidate
الشغل بتاعه. يعني انت بتvalidate من epoch واحدة بس. ويطلع لك نسبة يقوم راجع بنظبط في الtrain وهكذا. بعد ما بتخلص بقى ال epochs بتاعتك بالكامل كلها. بنخش بقى على مرحلة الtest set بقى وانك تبدأ تtest الmodel.
بتاعك. تمام? طيب. عادة دي النسب اللي بنستخدمها في الtrain والtest والايه والvalidation يعني كأن احنا نقسم الdata. كل اللي بيعملوا ان هو بيشتغل على الdata هو بياخد جزء من الdata  train جزء بيvalidate بيه وجزء بيtest بيه في الاخر. اه طبعا الerror ده بيتجمع بنفس الfunction.
على الحياة بتاعة الvalidate بتاعة وهنا بتاعة ال train وهنا بتاعة ال validate وهنا بتاعة الtest. هنا برضو بيقول لك ان في هنا برضو ان  ال validate والtraining والtest كل واحدة اللي بتبقى ليهم
ال hypothesis equation بتاعتها تمام طيب حلو اووى طيب حالة ان انا عندي small data اربط انا قلتلك حاجة في الاول بتستخدمها مع small data بالضبط cross validation cross validation هي دي نفس فكرتها هو بيقلك نعمل ايه
انا عندي data صغيرة فساعتها هعمل ايه? والله مش هستخدم validation set محددة علشان انا عندي الtrain قليل اه يعني عندي الdata قليلة فلو انا قسمتها كده الtrain هيبقى قليل قوي. امال هعمل ايه? قال لك والله بص انا هاخد الجزء ده كامل على بعضه.
خلاص خدت من ال data الجزء الtest واخد بقى الجزء الtrain والvalidate مش اخد جزء validate واخد لي جزء train لا انا هعتبره كله train ومع كل epoch هاخد منه حتة اعتبرها validation يعني هو هنا هياخد الvalidation set دي ويtrain بالجزء ده طب الepoch اللي بعدها والله هياخد الvalidation
set دى وهتtrain بالباقي. طب اللي بعدها هاخد دي الvalidation وهtrain بالباقي. هي كده اسمها cross validation. طيب وده مفيد في ايه برضو? مفيد في ال over fitting بيقضي على ال over fitting ليه? لان انت مش هتحفظ لو انت كنت بتtrain على الجزء ده بس على طول فلقيت ان في over fitting  انت بتحفظه ال cross validation هيمنع الحفظ ليه? لان انت كل epoch
بتشتغل على training set مختلفة ليه عشان ال validation عمالة بتتحرك و بتتغير فأنت بتtrain ب samples مختلفة طيب بقسمها بقا عدد التقسيمات للdata دى اسمها K والdata كلها عددها N بيقولك بقى ان اهو بص بص نفس الفكرة انا ليه مش هoverfit و ليه ده احسن للdata الصغيرة  عشان ال  validation set عمالة بتتحرك و بتتغير و الtraining set انا هنا بص بtrain
ال4 دول. هنا بtrain ب4 مختلفين. هنا بtrain ب4 مختلفين. فيقلل الoverfitting علشان انت كده مش بتحفظ الdata. تمام? طبعا الerror بيبقى هو مجموع الerror بتاع بتاع كل المحاولات دي. المحاولات دي عددها قد ايه? بنفس عدد الK. اللي هو العدد التقسيمات اللي انت قسمت بها.
يقول لك احسن K ان الK تبقى بتساوي N اللي هي size of one اللي هو بيقول لك ان انت ما تبقاش عملت cross validation ده فعلا ده احسن حاجة واحسن حالة وده ال best approximation ليه ان انت بيقى عندك اصلا data كتير وشغل بيها وما تحتاجش تشتغل بالcross validation اومال انا بشتغل بالcross validation ليه امتى
لما يبقى حاجتين ها data صغيرة او عايز احل الoverfitting تمام? في طرق تانية احسن كمان لحل الoverfitting  احسن من الcross validation عشان ما تضطرش تعمل cross validation وهي ال regularization وهناخدها كمان شوية. تمام? اه معظم الوقت بختار الK ب5 او ب10. بس هو المعظم 5.
الطريقة بقى اللي قلتلك عليها اللي هي بتحل مشكلة الoverfitting بدل ال cross validation هي الregolarization و الregolarization  دي هي مجرد بس ان هي بتعمل ايه? بتcontrol كده الcomplexity بتاعت الmodel مش الcomplexity  بتبقى عالية في الoverfitting  هي بتقللها شوية.
عن طريق انها بتزود حاجة اسمها regularization term على ال cost function فتقدر تزود فتعمل ايه مش انت دلوقتي الoverfitting  ان ايه اللي حصل الoverfitting  انه حافظ الdata يعني الerror بقى بكام الerror بقى ب0 الaccuracy  بقت 100% فهو عمل ايه زود لك regularization term على ال cost function
علشان يزود الerror تاني فترجع ال gradient descent  تشتغل تاني فما يبقاش الerror 0 ما يبقاش وصل ان هو حافظ الdata تمام وregularization term  ده فيه term hyperparameter انت اللي بتحطه تقعد تجرب بقى تخليه برقم عالي فالerror يزيد جامد قوي فالgradient descent يشتغل ويظبطه او تحطه برقم قليل فتلاقيه ظبط تحط رقم وسط تلاقيه ظبط وهكذا
تمام طيب اهو عن طريق ان هو خد الcost function خد الcost الاساسي وزود عليه الايه الcost بتاع الregolarization term  تمام? الregolarization  نوعين حاجة اسمها L1 norm تمام?
sorry اه اه حاجة اسمها L1 norm أو Lassu regression Lassu regression أو L1 norm ال coefficient  اللي بيضربه في regularization term هو بيبقى معموله absolute تمام طيب
في نوع تاني من ال Regularization اسمه L2 Norm أو Ridge Regression ده ال Coefficient اللي انا بضربه في Regularization Term بيبقى Squared تمام؟ طيب تعالى نشوف بعد اهو بص ده بيبقى Squared بص بروح اجمعه على ال Cost Function
طيب وده اهو بص يعني ده مثلا ده نوع ايه لو قلتلك ده نوع ايه? Ridge regression بالظبط او L2 norm regression ليه? علشان انا دلوقتي عندي  ال cost زودت عليه ال normalization factor او ال الregolarization factor sorry 
regolarization factor  او اسمو tunn
لا ما اسموش tunning أنا اسف هنا بيقولك ان ده بتعملو tunning ليه عشان هو hyperparameter هو  regularization term  او regularization parameter مضروف فيه ال coefficient square في ساعاتها ده ridge طب لو ما كانش ال coefficient square فيه دي وكان هنا absolute  ده ساعاتها كده lasso او L1 norm. تمام? ده ال hyperparameter  اللي انت بتعملو
تمام? الcost function اهي? دي الcost function اهي بعد التعديل بعد ما حطت لها ال ridge regression ادي اهو الcost function  اللي احنا عارفنا زودنا عليها regularization term  مضروف في الcoefficient  بتاعي square عشان كده ده Ridge لو كان absolute يبقى
lasso regression مش Ridge طبعا اللي اتنين ليهم مسميين مختلفين تانيين. اللي هو الL1 norm والL2. تمام? طيب. ده بيساعد في ايه? زي ما قلت لك. ان انا دلوقتي اه ال old solution  هو اه انا ممكن احط دي برقم ب0. فيبقى هو هو.
او ان انا احطه ب infinity يبقى رقم كبير فيبدأ يقل او ان انا احطه بحاجة في النص عادي اه براحتك يعني ده hyperparameter في النهاية هو بيخش بقى جوه gradient descent و repeat ويحسن ويحسن في الweights  دي ويحسن في الweights  دي الweights  المضروبة فى ال regularization term وهكذا
ليه؟ علشان خاطر يحاول ينزل للـ Minimum ويمنع الـ Overfitting ان يبقى الtrain ماشي في حتة و الtest ماشي في حتة انه يبقى حافظ الـ Data و بصمجة تمام طيب و دى فيديوهات اكتر الـ L1 و الـ L2 لو انت عايز تتعمق فيهم اكتر تمام ده كده الجزء الاول
فى فيديو تانى هنشرح الجزء التانى بتاع ال classification