بسم الله الرحمن الرحيم، احنا اليوم إن شاء الله بدنا
نكمل الموضوع اللي فتحناه قبل هيك في المحاضرات
الماضية، اللي هو الـ artificial neural networks الـ
supervised learning باستخدام الـ artificial neural
networks. كنا في المحاضرة الماضية حكينا عن اللي هو
الـ Perceptron، وشوفنا آلية عمله، وآلية
التعلم اللي هي مقصودة بالتعديل الوزني، وبعدين
كمان أيضًا طلعنا على الـ multi-layered networks الـ
multi-layered networks اللي هي عبارة عن شبكة من الـ
perceptrons. الشبكة هذه مُهيكلة على أساس layers، والـ
layers، كل layer فيها مجموعة من الـ perceptrons
بتغذي المجموعة اللي بعدها، أو الـ layer اللي بعدها،
وشوفنا آلية التعلم في الـ multilayer networks،
صح، آلية التعلم المُتّبعة بها مرة أخرى، اللي هي آلية
تعديل الأوزان، وشوفنا كيف بتختلف آلية تعديل الأوزان
في الـ output layer عنّها في الـ hidden layer، صح الآن؟
احنا بدنا نلقي نظرة أخيرة على الـ multilayer
networks، بعدين بنحكي في جزئية صغيرة، اللي هي الـ
accelerating، اللي هي النقطة هذه، ماضحة النقطة هذه،
اللي هي accelerated learning، المقصود بها تسريع
عملية التعلم. عملية التعلم احنا فاهمين إنها بتحصل
على شكل ايش؟ iterations. iterations، مظبوط، وسمينا كل
مجموعة من الـ iterations سمينها epoch، صح؟ الـ Epoch هو
دفعة، أو short من الـ iterations. عملية التسريع هو
تقليل عدد الـ iterations. بدل من أن الـ network تأخذ
400 دورة، 400 iterations قبل أن تستقر الأوزان، لما
بنقول احنا بدنا نسرّع عملية التعلم، معناه ذلك
الـ 400 هدول بدنا نختصرهم، أو نُقلّلهم إلى 300،
إلى 200، إلى 100 ربما، بدون أن نُنقص من دقة
التعلم. هذه النقطة اللي هي المقصود بها اللي هو
accelerated learning، أو ممكن نقول accelerating الـ
learning، يعني تسريع التعلم في الـ multi neural
networks. بعد ما نخلص النقطة هذه إن شاء الله، بنتطلع
على الـ Hopfield network والـ BAM، اللي هي
bidirectional associative memories. هدول نوعين من
الـ artificial neural networks اللي بينطوروا تحت إطار
اللي هو supervised learning. طيب، إيش قلنا بدنا
نبدأ في الأول بإيش؟ بإننا نلقي نظرة أخيرة على الـ
multilayer neural networks اللي كنا حكينا فيها من
قبل. بدنا نرجع على طريقة الـ slide اللي فيها الـ
example اللي تبعه، تتذكروا تبع إيش؟ تبع تدريب الـ
network على اللي هو الـ XOR، الـ XOR gate أو الـ XOR
function، ذاكرين؟
هذا المثال. اما كنا بنحكي إنه هاي الـ neural network
في عندنا الثلاث nodes، هدول node رقم ثلاثة ورقم
أربعة، هدول تابعين لإيش؟ للـ layer، الـ hidden layer،
مظبوط، الـ hidden layer، صح؟ والـ output layer إيش
فيها؟ فيها node واحدة، اللي هي node number five، صح؟
لأن الـ input بيدخل بـ X1 و X2 على node number one و
node number two. ملاحظين هدول الـ two nodes شكلهم
مربع، لتمييزهم عن من عن الـ nodes الأخرى. مميزين بإيش؟
إيش الفرق ما بينهم؟ إن هدول ما بيعملوش أي
calculations، ما بيعملوش أي computation، صح؟ مجرد اللي
بيدخل عليهم بيتوزع على مين؟ على اللي بعدهم، okay؟ يبقى احنا
عمليًا في المثال هذا، يوم ما بدنا نيجي نحسب ونعدّ
الأوزان، ونعد الأوزان، بس ثلاثة وأربعة وخمسة،
مظبوط، بنبدأ من مين؟ من الخمسة في الأول بالظبط، لأن
الخمسة هي اللي عندها desired output، وهي اللي بتقدر
تعرف الـ error أو تحسب الـ error، وبعدها بتطلع الـ
error، بتعدّل أوزانها، وبعدها بترحل الـ error
gradient إلى مين؟ إلى ثلاثة وأربعة، الـ error
gradient اللي ذكرناه هو small delta، بترحل إلى ثلاثة
وإلى أربعة، عشان كل واحدة منهم، ثلاثة وأربعة، تحسب
الـ error تبعها، الـ error gradient تبعها، يعني عشان
تعدّل أوزانها بناء عليه. هذا الكلام هو total طبعًا،
هنا في الـ slide هذه، بيعطيك الـ initial values تبع
الـ إيش؟ الأوزان،
والـ threshold،
that theta، صح؟ مظبوط؟ بعد ذلك، هنا بيبدأ الحساب. أول
شيء، بيحسب الـ Y3، الـ output اللي بده يطلع من Y3،
مظبوط، بس احنا قلنا أول حاجة، بدنا نعدّل الأوزان
فيها على Y5. طب ليش بدأنا في Y3 و Y4؟ لأن Y5
بتعرف كيف تحسب الـ output تبعها، لازم يجيها input من
وين؟ بتجيها الـ input من Y3 و Y4. يبقى لازم أحسب Y3 و
Y4، ليش؟ بدهم يطلعوا عشان نُسَلّم لـ Y5، عشان Y5 تحسب
الـ output تبعها. تبعها، دلوقت، لأن شوف إيش فيه error،
ويتراح تاني، يعني احنا forward propagation
of data، و backward propagation of error
information، صح؟ okay، هي الآن، بعد ما طلعنا ...
من حسبنا، وطبعًا حسبنا الـ activation
function، استخدمنا اللي هي الـ sigmoid، الـ sigmoid،
طبعًا، يوم ما يكون في عندك مثال أو امتحان أو كده، الـ
formula حتبدو مألوفة لك أنت، بس مجرد إيش؟ بتاخد
الأرقام وبتطلع الـ output. الـ output، لأن الـ sigmoid
بتطلع continuous values، يعني إيش؟ يعني أرقام عشرية،
مش binary زي مين؟ زي الـ step function، و ليش؟ بالـ pulse
function، صح؟ okay، فَالآن هذه الـ continuous values،
أو الـ real values، أو الـ float values، بتدخل على مين؟
على Y5، تنضرب في الأوزان تبعها، وتُؤخذ مع الـ
threshold عشان تطلع الـ output تبع Y5. من هنا الآن،
نبدأ نشوف ليش الـ error، الـ error اللي أنا بحسبه هو
عبارة عن ببساطة الـ difference ما بين الـ desired، الـ
desired، لما يكون عندي أنا الـ X واحد، X واحد،
أنا بقصد هنا X واحد و X اثنين، الاثنين الـ input، الـ
value تبعهم one one، لازم الـ XOR function
تعطيني إيش؟
Y5 يفترض أن يكون zero، بس ما هو اللي بيطلع معنا هنا
في الـ calculation هذا، يفترض أن يكون zero، بس ما هو
اللي بيطلع معنا هنا في الـ calculation هذا، يفترض أن
يكون zero، بس ما هو اللي بيطلع معنا هنا في الـ
calculation هذا، يفترض أن يكون zero، بس
ما هو اللي بيطلع معنا هنا في الـ calculation هذا،
يفترض أن يكون zero، بس ما هو اللي بيطلع معنا هنا في
الـ small delta تبع هذه الخمسة، اللي هي إيش اسمها؟
الـ error gradient. شوف أنا وين بقصد هنا الـ error
gradient، إذا ذكرتوا هذا المصطلح، إن هو الـ small
delta، الـ error gradient هذا لما بنحسبه، بعد هيك، على
أساسه، بتتعدّل الأوزان، الأوزان تبعون الـ inputs اللي
داخلة على Y خمسة، صح؟ من هم هدول الأوزان؟ W ثلاثة
خمسة، و W أربعة خمسة. ليش بسمّيهم هيك؟ لأن واحد منهم
جاي من ثلاثة إلى خمسة، والثاني جاي من أربعة إلى
خمسة، أو الأصح إن احنا نقول واحد منهم هو وزن الـ
input اللي جاي من ثلاثة إلى خمسة، والثاني هو وزن الـ
input اللي جاي من أربعة إلى خمسة، صح؟ طبعًا. فأول شيء
عشان نعدّل الأوزان، نحسب الـ delta تبع الوزن، مقدار
التغيير، بعدين بنضيفه على الـ current، أو الـ weight،
الوزن الحالي، عشان يطلع معنا وزن جديد. نفس الشيء
بنعمله لمين؟ للـ Theta، للـ Threshold. لاحظوا أن
عملية تعديل الأوزان ببساطة شديدة، يعني الـ Delta،
بيصير عبارة عن الـ Alpha اللي هو الـ learning rate،
مضروب في قيمة الـ input اللي بيخش عبر هذا
الوزن، مضروب في الـ Delta، small Delta اللي هي الـ
Delta 5. فهي Delta 5 موجودة في الثلاث حسابات،
طيب، هذا الكلام إيش خلّصنا فيه؟ هذا الكلام بس لحساب
الأوزان تبع input اللي داخلة على مين؟ على
Y5. لازم نعيد نفس الشيء للـ inputs اللي داخلة على
Y3 و Y4، صح؟ okay، هذا الكلام نفس القوانين، بس طبعًا
لازم في الأول، كل واحدة من Y3 و Y5 تحسب الـ error
gradient تبعها، اللي هو الـ small delta تبعها، وبعدين
عليه، small delta بتدخل
في حساب الأوزان اللي رايحة على ثلاثة، وبعدين small
delta تبع أربعة بتدخل في حساب الأوزان اللي رايحة
على أربعة. أنا الآن بدل ما إني طبعًا هنا بعد هيك،
الأوزان، اللي هو W واحد ثلاثة، W واحد أربعة،
W اثنين ثلاثة، W اثنين أربعة، W ثلاثة خمسة،
W ثلاثة أربعة. okay، بدل أنا الآن نمُرّ بهذا الحساب
خطوة خطوة، لأ، أنا بدي أجيب وأقول لك الآن، اعتبر أنت
بدك تكمل المثال هذا، الـ iteration اللي بعد هذه، الـ
iteration الأولى، ولا لأ؟ لأن هذه الـ iteration إنبنت
على الـ initial، الـ initial values تبع الأوزان،
مظبوط. أنت الآن خذ هذا، وخذ الـ input اللي بعده، مين؟
الـ input اللي بعده، إذا كان الـ input الأولاني كان
one one، خذ zero one، X1 بـ zero و X2 بـ one، وعيّد
الكرة من جديد، بالأوزان اللي هذه اللي نتجت من نهاية
الـ iteration الأولى. أنت الآن بدك تحسب الـ iteration
الثانية، بتقدر تعمل هذا الكلام ولا لا؟ بتقدر، إذا
أعطيناك homework إن شاء الله بتقدر. لأ، فخلاص هي الآن
homework. هي الآن homework مطلوب منك إيش تسوي؟ تعيد
الكلام ده كله، للـ iteration number two، عشان تطلع
إيش في الآخر؟ الأوزان. يعني في الآخر بدك تطلع صفحة
زي هيك، فيها أوزان جديدة، اللي بدها تكون عندك اللي هو
الـ iteration الثاني، في نهاية الـ iteration الثاني،
إيش حتكون قيمة الأوزان الجديدة، والثresholds
الجديدة، okay؟ طيب، هيك بنكون احنا ألقينا النظر الأخير
على عملية الـ back propagation learning. واضح ليش
اسمها back propagation؟ لأن احنا بنرجع الـ error
لَوراء على الـ layers، من الـ output إلى الـ hidden، الـ
hidden، طبعًا ممكن تبقى layer واحدة، أو أكتر من، ممكن
two hidden layers، ماشي؟
هاد الآن احنا بدنا نحكي في الـ acceleration، كيف
يمكن تسريع، التسريع الـ learning هذا، الـ curve لو
لاحظت عليه، إيش بيمثل؟ علاقة إيش بإيش؟ هنا epoch، بقول
iterations، لأن الـ epoch الواحد هي مجموعة iterations،
فأنا هنا من zero، عشان 50، 100، 150، 200،
أقصد بها إيش؟ 200 iterations، 150
iterations. كل ما بزيد عدد الـ iterations يفترض أن
الـ error إيش بيصير فيه؟ بيقل، بيتناقص. احنا الآن الـ
error، أحيانًا الـ network بتبقى الـ output layer
تبعها فيها node واحدة، فهو error واحد، مظبوط؟
أحيانًا بيبقى الـ layer الأخيرة بيبقى فيها عدد من
nodes، وبالتالي الـ error، في عندي error للأولى، error 172 00:13:32,
foundation لِ.. لِ.. لِيش؟
لِـ course يكون في الجزء النظري أكثر فإحنا الآن
بدنا ننتقل على هذه هي الطريقة الأولى، هذه الطريقة
الأولى لتسريع عملية التعلم، طريقة ثانية، اللي هو
إحنا نستخدم حاجة اسمها momentum term، انظر على
المعادلة هذه، انظر على الشق هذا، هل الشق هذا شفناه
قبل هيك؟ أول شيء، أيش اللي على اليسار؟ اللي يساوي
اللي هو الـ delta W، اللي هو ايش؟ فرق الوزن بالعادة
احنا بنعرف أن فرق الوزن هو في المحصلة هيك، بس مجرد
الـ alpha مضروبة في الـ input مضروبة في small delta
لِأذكركم في هذا الكلام، هيتوا، ارجع هنا ورا شوية
ارجع هنا ورا شوية، هيتوا، هي delta صح؟ عبارة عن ايش؟
alpha مضروبة في XX اللي هي الـ input مضروبة في
دلتا دلتا اللي هي error gradient تبع الـ node نفسها
اللي نحسب لها تلاتة أو زمن الداخلة عليها من واحد و
من اتنين، مبدئياً للي مش حافظ، تعديل الوزن delta w هي
عبارة عن ببساطة learning rate
مضروب في الـ input اللي داخل على الـ node من هذا
الوزن مضروب في الـ gradient، طيب ايش الاستخدام؟
الاستخدام هذا، الـ band هذا أو هذا الـ term هذا، الـ
term اللي هو الـ momentum term، momentum يعني الدفع
بيعطي الدفع لعملية التعلم، هو ببساطة شديدة عبارة
عن beta، هي عبارة عن constant صغير ما بين الـ zero
والواحد، مضروب في ايش؟ مضروب في ايش؟ في الـ delta
point، يعني بدنا الآن الـ network تتذكر الـ delta
السابق، احنا نحسب الـ delta تبع P و بنقول أنه بدنا
الـ delta تبع P ناقص واحد، يعني ايش؟ الـ delta السابق
مش الوزن السابق، مش W، لأ، delta W، بدنا ناخده هذا
نحتفظ فيه للدورة اللاحقة، عشان نضربه في مين؟ في الـ
beta، هذا الكلام بشكل دفع لمين؟ لعملية التعلم، وهذا
الـ beta قيمة تتراوح من zero لواحد، عادة بتبدأ قريبة
من الواحد، قريبة من الواحد، يعني 0.95 مثلاً، فهذا اللي
هو الآن
two methods أو two measures أو two steps أو two
techniques، ليش؟ for accelerating، أول
واحد، ايش كانت؟
الثاني، استخدام ايش؟
momentum constant term، لأ، الـ constant هو جزء من الـ
term، هذا هو كله عبارة عن الـ momentum term، تتكون
من حاجتين مضروبات في بعض، اللي هم الـ momentum
constant اللي هي beta مضروبة في الـ W تبعت الـ
iteration السابقة، هذا الـ term بينجمع على الـ term
الأصلي تبع تعديل الأوزان، اللي هو الـ alpha مضروبة
في الـ input مضروبة في الـ error gradient، error
gradient اللي هي small delta، تمام؟
ايش
غير هذا؟ هدول طريقتين، اللي قلنا ايش؟ أو أسلوبين لـ
accelerating learning، غير هيك، هذا المثال نفس
المثال اللي قبل هيك، بوريك كيف الـ
learning rate هنا ثابت، ما تغيرش، ثابت، و الـ error
بينزل، الـ error بينزل، صار بدل ما أخدت بدل
ما تاخد 200 iteration عشان يقترب الـ error من الـ
zero، أخدت قديش؟ 126
epoch أو iteration، مش مشكلة، المهم القصد أنه انضغط
الأمر من 200 إلى 126، هذا باستخدام الـ momentum term
لما أضيف الـ momentum term على تصميم formula تعديل
الوزن، صار اختصر أو قلّ الوجد إلى 126 بدل 200
إذن، الآن، إضافة إلى هذول الـ two techniques، رقم
تلاتة، اللي هو الـ heuristics
heuristics، هذول فيهم any tools rule بتقول إنه إذا
كان أنا قاعد بأجمع اللي هو ايش؟ الـ sum of square
errors، ايش هو الـ sum of square errors؟ بتذكرها لو
لسه كنا نحكي، اللي هو بجمع الـ errors تبع كل الـ
nodes و بربعها، أولا بأخذها، بربعها، بعدين بجمع
مربعاتها، إذا من epoch لـ epoch، الـ sum of square errors
هذا sum of square errors باستمرار
هذا الـ sum من
واحد للي بعده، إما في ازدياد، يعني في الأول كان الـ
sum نقول مثلاً تلاتة، بعدين صار أربعة، بعدين صار خمسة،
بعدين ستة،
بيزيد، أو الـ axis أنه في نزول، يعني الـ sum تبع هذا
الـ epoch أقل من اللي قبله، واللي بعده أقل، واللي
بعده أقل، جاي بتنقص، هذا الكلام مش معناته، معناته لما
أنا بقى آخذ الفرق، من تلاتة ناقص أربعة بيطلع ناقص
واحد، أربعة ناقص خمسة بيطلع ناقص واحد، دائماً.. دائماً
..دائماً الفرق.. دائماً الفرق إشارته بالسالب، وهنا
نفس الشيء برضه، سواء كان هو صعوداً أو هبوطاً، لما أنا
أجي أقول مثلاً هذه عشرة، واللي بعدها تسعة، واللي بعدها
ثمانية، عشرة ناقص تسعة واحد، تسعة ناقص ثمانية واحد،
فالفرق دائماً إشارته موجبة، هنا دائماً إشارته السالبة،
إذا دائماً هيك.. إذا دائماً.. إذا الـ change of the
sum of square.. change.. الـ change.. التغير
يعني هنا من عشرة إلى تسعة، وتسعة، إذا دائماً هذا الـ
change.. كيف أنا بأحسب الـ change؟ بأخذ الفرق، إذا
دائماً هذا الفرق بحافظ على نفس الـ sign، نفس الإشارة،
إما دائماً موجبة أو دائماً سالبة، يبقى أنا في عندي
اضطراد، أنا في عندي حاجة اسمها الـ.. الـ.. الـ.. الـ
..الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ..
الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ
..الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ..
الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ
..الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ..
الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ
..الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ..
الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ..
..الـ.. الـ.. الـ.. الـ.. الـ.. الـ.. الـ..
الـ..
الـ.. في الـ sum of square errors، يبقى
أنا المفروض أسرّع، أزيد الـ alpha، فإذا كان اختصر هذا
الـ linguistic كالتالي: إذا كانت الـ sign of sum of
square errors لا يوجد الاختصار
وبعدها كلمة stable، ايش يعني stable؟ يعني ما فيش
فيها تذبذب، مش مرة زائد ومرة ناقص، يعني مش أنه مرة
تلاقي هيك، هنا الفرق هذا ناقص هذا سالب، سالب، بعد هيك
الفرق صار موجب، مظبوط؟ هنا ما فيش فرق، هنا صار سالب
سالب، سالب، هنا موجب، هذا تذبذب في ايش؟ في الـ sign
إذا كان الـ sign is stable، فايش بسوي؟ increase alpha،
ألفا اللي هي learning rate، وشفتوها في واحدة من
الأمثلة كانت 0.1، increase يعني بخليها 0.2 مثلاً،
بخليها 0.3 أو بقيت وأقول بدي أضربها، دائماً بزيدها
بـ 5%، يعني 0.1 بدي أضيف 0.105، يعني بخلي، بمختصر أن
ألفا تساوي ألفا ضرب 1.05، هذا معناته بزيدها بـ 5%،
ممكن أقول لأ، ده زي ده 15%، ممكن أقول ده زي ده 25%،
المهم أنا بقى بأثبت، نسبة زيادة، امتى بزيد، امتى
بقى بضبط، ده الكلام لما قال لي أنه الـ sign ثابت،
العكس من ذلك، إذا الـ algebraic sign of الـ change الـ
change اللي هو يعني مقصود يتغير في الـ alternates،
session alternates، يتذبذب، مرة آخر مرة موجبة، مرة
سالبة، اللي هو معناه ذلك.. معناه ذلك في عندي الـ..
الـ network مرة بتقترب.. مرة بتقترب وبتقلل الـ error
و مرة بتبعد، فجأة غيرت الأوزان بشكل كبير، صار يطلع
معها error وبعدين كانت مقتربة، بس ايش؟ التغيير
اللي حصل كان تغيير كبير في الأوزان، خلها تفشل عن..
زي ما هم بيقولوها، تخطي الصواب، وصارت الاشياء تبعد، و
بعدين صارت تتردد ثانية، بس لما ردت ما رجعتش على الصواب،
فشلت عنه بـ.. فصار.. فايش فيه مشكلة؟ المشكلة أنها
بتخطي خطوات واسعة، فأنا بضيق الخطوات هذه، كيف بضيق
الخطوات؟ بنزل الاشياء، الـ alpha، الـ learning rate، فإذا
كان الـ sign خلاص، فأقول إذا هي مش stable sign
of SSE alternates،
معناه
ذلك، decrease ألفا،
decrease ألفا، برضه يكون عندي كمان، بتقدر تتخيل يعني
هنا هو مثلاً الـ decrease،
بأنه بضربها بـ 70%، بـ 7 من 10، يعني بنزلها 30%، تمام؟ و
الـ increase بضربها في 1.05، واضح؟ تمام؟ فهنا
بوريلك كيف أنه هاي الـ Epochs ماشية، وفي ده الـ دي
الـ learning rate قاعد بتساعد نتيجة تطبيق ايش؟ هذي
تمام؟ قاعد بيحسب لك أنه الـ error، الـ software
errors قاعد في النازل، صح؟ في النازل، يعني إشارته
دائماً موجبة، مظبوط؟ بقى أطرح السابق، وبقى أطرح منه
اللاحق، وطلع موجب، فهو بسبب أنه هذا موجب، التغير
موجب، اه التغير موجب، فهو عمال بيرفع، ليش؟ في اللي
عند حد معين، جاب
الـ الـ
alpha بدأت تنزل، و نزولها، لأن وضعها في 0.7، النزول
أسرع أو أشد من الصعود، صعود تدريجي بسيط 5% كل مرة،
إنما هنا 30% كل مرة، فبدأت تنزل نزلة جامدة، مين هي
اللي هو الـ learning rate نزل نزل جامدة، مع النزلة
هذه، بدأ يقترب من ايش؟ من، بوريك فعلياً هذا الأسلوب
في الاقتراب من
من الـ error المخفض بوقت أقل، 100 epoch بدلاً من 126
epoch، هذا
الآن استخدم الـ momentum مع برضه هذه الـ heuristic،
إقبال adaptive، ايش يعني adaptive؟ يعني لما نقول
adapter، ايش يعني adapter؟ يعني محول، adaptive يعني
أنه يتحول ويغير من تلقاء نفسه، ماهو اللي بتغير من
تلقاء نفسه الـ learning rate لوحده بناء على
استشعاره لـ sign تبع من الـ sum of square arrows،
هو نفسه من تلقاء نفسها الـ network بتغير في الـ
learning rate تبعها، عشان ذلك اسم هذا الكلام
adaptive learning، فلما اندمج الـ two techniques الـ
adaptive learning مع الـ momentum، صار عندي اختصار
لسه أكثر، صرنا بنصل إلى
الـ zero
تقريباً error، ومعناه مش zero، هذا الكلام واحد من ألف، نقص
ألف، نقص ثلاث يعني واحد من الألف، يعني مش zero،
ما بدناش بالظبط 0، يعني ممكن تبقى صعب جداً أنّه الـ 391 00:32:50,940 -->