IoT_Lecture_7_by_Hindih
هنبدأ Lecture 7؛ أول حاجة الـ Deep Learning والـ Artificial Neurons. إيه فكرتها؟ 
إن هي بتعمل simulate للـ human brain وبتعمل solve لـ problems صعب إن إحنا نحلها بالـ Machine Learning، زي مثلاً عندنا Object detection problem
 عندنا Image فيها human وcar وanimal، فإحنا عايزين نـ detect الـ objects المختلفة اللي موجودة في الـ Image دي، فـ هنستخدم الـ Deep Learning.
كمان في الـ Machine Learning لما كنا بنيجي نعمل Feature extraction 
كنا بنستخدم Statistics زي الـ Correlation أو الـ Variance أو Statistics مختلفة تمام، 
فدي حاجة لما الـ Features تبقى Simple أو إن هي متبقاش Complexهنعرف نعمل نستخدم الطرق دي. إنما في الـ Deep Learning، الـ Features بتبقى Complex بيبقى عندنا...
يعني complex data، فبيبقى صعب إن إحنا نستخدم الطرق دي. فبنعمل إيه؟ 
هو بيـ train، بيـ extract features وبيعمل calculate للـ output، بيشوف الـ output، بيحسبله الـ error، وبعدها بيعمل update للـ weights. بيفضل يـ train ويعمل iterations كتيرة لحد ما يوصل لـ high level features. يعني مثلاً لو إحنا عندنا...
هنعمل classification لـ cat أو dog، هو المفروض إن فيه general features 
بين الـ cat والـ dog، تمام؟ الـ features الـ general دي مش هتعرف تميز الـ objects المختلفة أو مش هتعرف تـ classify صح. فإحنا المفروض نفضل نـ train لحد ما نوصل 
لـ high level features.
تعرف تميز الـ Cat عن الـ Dog بحيث إن إحنا نعرف نعمل Classification صح. وزي ما قلنا إن هو بيعمل Simulate للـ Human brain فـ هو بيتكون من مجموعة Layers، 
كل Layer فيها مجموعة Neurons. الـ Neurons دي بتمثل الـ Neurons اللي موجودة في
 الـ Human brain، فهما لما جم يعملوا Definition قالوا إن كل Neuron بيبقى عبارة عن Processing unit.
بيحصل عندها Equations معينة، وكل Neuron بتشتغل In parallel. يعني إحنا لو عندنا Complex architecture متكون من مجموعة Layers كتيرة وكل Layer فيها مجموعة Neurons، وكل Neuron بتشتغل In parallel على الـ Equations اللي عندها، فإحنا هنحتاج Computational power عالية جداً. تمام؟ لما نيجي بقى نـ train أو نعمل كذا Iteration ونحسب أو نـ update الـ Weight، بنستخدم الـ Gradient Descent.
وفي الـ Python Libraries مختلفة بتـ support الـ Matrix multiplication اللي بتبقى موجودة في الـ Architectures المختلفة في الـ Deep Learning زي الـ TensorFlow 
أو الـ Keras. ده شكل الـ Artificial Neuron ده شكل Simple للـ Artificial Neuron.
 أول حاجة مجموعة Input features، وكل Input feature بيبقى ليها Weight.
ولو إحنا هنستخدم Image، فـ الـ Input features دي بتمثلي الـ Pixel values. 
بنعمل Multiplication لكل Input feature في الـ Weight وبعدين بنعمل لهم Summation في الـ Summation ده إحنا بنستخدم الـ Linear equation العادية، تمام؟
 فده بيمثل لي Layer واحدة، والـ Layer دي فيها Neuron واحدة، دي One neuron.
بتعمل بتـ apply linear equation على الـ input feature والـ weights. 
الـ threshold ده بيمثل لي الـ bias أو الـ y-intercept،
 اللي هو لما بنـ apply
linear equation وبتبقى straight line بنشوف هو بيمر بالـ origin أو off the origin بيمثل لي الـ bias، يعني تمام؟ بعدها بنـ apply activation function على الـ result دي
 الـ result دي هي الـ net input.
يعني بعد ما بنعمل الـ Equation دي بيبقى عندي Net input،بنـ apply
Activation function على الـ Net input ده ليه؟ لأن بيبقى عندنا Complex problems صعب إن إحنا نحلها بـ Linear equation أو صعب إن إحنا نحلها بطريقة Linear، فبنبقى محتاجين نـ apply الـ Non-linearity للـ Data أو الـ Equations عشان نعرف نحل
 الـ Complex problems.
فدي الـ Linear equation العادية اللي إحنا بنستخدمها، وبعدها بنـ apply عليها
 Activation function سواء Activation function
ReLU، Sigmoid، Tanh. الـ ReLU activation function هي الـ Range بتاعها بيبقى من 0 لـ Infinity، يعني بتاخد الـ Net input ده لو الـ Value بتاعته...
بـ Zero أو Negative بيبقى الـ Output
Zero. طب لو الـ Value أكتر من الـ Zero هتـ map لنفس الـ Value. 
وفيه Activation functions كتيرة أول Activation function هي الـ Sigmoid. 
دي الـ Equation بتاعة الـ Sigmoid وده شكل الـ Sigmoid من غير Derivative وده شكل 
الـ Derivative بتاع الـ Sigmoid function
هنلاحظ إن لما بتبقى الـ Net input اللي هو الـ Equation دي تبقى في Range معين، بنلاحظ إن فيه Change في الـ Values بتاعت الـ Derivative بتاعت الـ Sigmoid function يعني بيبقى فيه Rate of change. تمام؟ لما بتزيد عن Range معين بنلاحظ إن الـ Change بيقل أو إن هي الـ Values بتقرب إن هي تبقى Fixed.
أو الـ Rate of change بيبقى قليل، وكذلك لما بتقل عن Range معين.
 ده هيسبب لنا مشكلتين هنعرفهم كمان شوية. تاني Activation function
الـ Hyperbolic Tangent. دي الـ Equation ليها، تمام؟ 
ده شكل الـ Activation function من غير Derivative وده شكل الـ Activation function بالـ Derivative. هو شبه الـ Sigmoid شوية
لما بيبقى الـ Net input في Range معين، بنلاحظ إن فيه Rate of change في
الـ Derivative للـ Activation function. لما بيبقى بعد Range معين أو مثلاً
أو أقل من Range معين، بنلاحظ إن الـ Change بيقرب يبقى Zero، أو إنه مبيبقاش فيه
 Rate of change في الـ Derivative نفسها للـ Activation function
دلوقتي إحنا حسبنا.. إدينا مثلاً Values random للـ Weights 
وبعدين حسبنا الـ Output وحسبنا الـ Error، فعايزين نعمل Update للـ Weight.
 دي Equation الـ Update للـ Weight. 
أول حاجة الـ Weight الـ New بيساوي الـ Weight الـ Old ناقص eta
η ، الـ eta دي بتمثل لي الـ Learning rate.
في derivative الـ Loss function according للـ Weights. دي Equation الـ Loss function 1 over 2 multiple m
. الـ m دي بتمثل لي عدد الـ Samples اللي في الـ Data، تمام؟ بعدها بعمل summation للـ y الـ y دوت اللي هو الـ target variable اللي هو بيبقى مديني الـ Value ليه.
والـ y التانية دي اللي هي إحنا بنحسبها من الـ Activation function، بعدها بعمل لهم square. فهنلاحظ إن الـ Loss function مش function في الـ Weight بشكل direct. نسيب الـ Problem دي وهنرجع لها تاني. فده شكل الـ Loss function، هي مش function في الـ Weight بشكل direct. فإحنا المفروض عايزين نجيب الـ derivative للـ function دي بالنسبة للـ Weight.
فهنستخدم الـ Chain rule. أول حاجة الـ y دي، اللي هو الـ Target، 
ده قيمته بتبقى Constant. إنما إيه اللي بيتغير؟ الـ y اللي أنا بحسبها، لأن دي بتبقى الـ Result من الـ Activation function. فـ أنا هجيب الـ Derivative بالنسبة للـ y دي فأول حاجة أنا هاخد الـ Term ده أجيب الـ Derivative بالنسبة للـ y دي. طب الـ y دي مش هي 
الـ Activation function؟
الـ y دي بتمثل لي الـ Activation function الـ Activation function دي function في
 الـ h، الـ h دي اللي هي الـ Linear equation. فـ المفروض برضه هنجيب الـ Derivative
 للـ Activation function بالنسبة للـ Linear equation اللي هي الـ h.
الـ h دي، اللي هي الـ Linear equation، أصلاً function في الـ Weight، 
فإحنا كمان هنجيب الـ Derivative للـ Linear equation اللي هي الـ h بالنسبة للـ Weight. الـ Linear equation دي function في الـ Weight لأن إحنا عندنا الـ Input values 
بتبقى Fixed، إنما الـ Weight هي الـ values.. 
 values الـ Weight هي اللي بتتغير.
فـ في الآخر ده شكل الـ Derivative للـ Equation دي هنعمل Derivative للـ Term ده، وكل Term لوحده. الـ Term ده بتمثل لي الـ Derivative لأي Equation function
 إحنا هنستخدمها، يعني نجيب الـ Equation function ونجيب لها الـ Derivative. فده لما جبنا الـ...
فهنبدأ بقى نعمل update للـ Weight ونرجع تاني نحسب الـ Output عن طريق الـ Weight الجديد ونشوف بقى نسبة الـ Error قد إيه لحد ما نوصل للـ Minimum error. 
عندنا بقى مشكلتين، هي الـ Vanishing Gradient والـ Dead Neurons. 
أول حاجة إحنا لما يكون الـ Neural Network عندنا أو الـ Architecture يبقى الـ Depth 
اللي فيه كتير، أو إن إحنا عندنا Layers كتيرة، ونيجي نعمل update للـ Weight بعد ما بنحسب الـ Output وبنحسب الـ Error، المفروض إن دي الـ Equation اللي بنعمل على أساسها update للـ Weight.
المفروض إن الـ Term ده يبقى الـ Derivative للـ Loss
according للـ Weight. فيه جزء من الـ Derivative دي بيـ depend إن أنا أجيب
 الـ Derivative للـ Activation function. وإحنا قلنا إن فيه بعض 
الـ Activation functions لما يكون الـ Net input في Range معين بيبقى 
الـ Derivative ليها قريبة من الـ Zero.
أو إن هي تكاد تكون Zero يعني، تمام؟ أو الـ Rate of change بيبقى قليل جداً، زي 
الـ Sigmoid والـ Tanh. فـ ده هيعمل لي مشكلة إيه؟ إن الـ Term ده هيبقى قريب من الـ Zero لأن دي في الآخر الـ Equation، لما الـ Derivative دي تبقى قريبة من الـ Zero أو هي تبقى Zero، فالـ Term ده هيبقى قريب من الـ Zero.
فإحنا لما نيجي نعمل update للـ Weights، هيبقى الـ Weight الجديد قريب جداً 
من الـ Weight القديم أو إن هو هيبقى نفسه الـ Weight القديم،
 فاللي هو مش هيتغير كتير، يعني الـ Weight.. الـ Weight هيبقى الـ rate of change 
للـ Weight قليل جداً أو إن الـ Weight نفسه مش هيتغير. تاني مشكلة هي الـ Dead Neurons. إيه مشكلة الـ Dead Neurons؟
إن إحنا عندنا بعض الـ Activation functions بيبقى الـ Output بتاعها بيبقى Zero
زي مثلاً الـ ReLU Activation function. لو الـ Net input.. الـ Values اللي فيه أقل من
 أو equal Zero، فـ الـ Output دايماً هيبقى Zero. فهيبقى فيه Ranges كتير من
 الـ Input..
هتـ map لـ Zero فكدة الـ Neuron دي هتبقى Dead neuron لأن هي هتدي
 Output Zero.
 أو زي الـ Step function اللي بتـ map الـ Negative values للـ Zero والـ Positive values لـ One. هنرجع للـ XOR Problem هي أول حاجة الـ Single layer perceptron بتقدر تـ solve الـ problems أقدر أعمل separate للـ classes اللي فيها بشكل linear.
زي الـ OR problem والـ AND problem. يعني أنا هنا عندي الـ OR problem
إمتى بتبقى 1؟ لو أنا عندي 2 variables، أي قيمة فيهم بـ 1، فالـ OR هتبقى بـ 1. 
وهنا الـ Class الـ blue بيمثل لي الـ values اللي بتنتمي لـ Class 1، تمام؟ 
والـ Class الـ red بيمثل لي الـ values اللي هي في Class 0.
في الـ OR problem طب والـ AND إمتى بتبقى 1؟ 
لو الـ x1 والـ x2 قيمتهم بـ 1، الـ AND هتبقى بـ 1. غير كدة هتبقى بـ 0. فأنا قدرت في الـ OR 
أعمل Line يـ Separate الـ Class الـ Blue عن الـ Class الـ Red.
وقدرت في الـ AND برضو أعمل Line يعمل Separate للـ Class الـ Blue عن الـ Class
 الـ Red، أو يـ Separate الـ Classes الـ Values اللي فيها بـ 1 عن الـ Classes الـ Values اللي فيها بـ 0.
في XOR problem بقى، هي إمتى تبقى بـ 1؟ لو واحدة من الـ 2 values بـ 0، تمام؟ 
مينفعش الاتنين يبقى ليهم نفس الـ Value. يعني لو الاتنين بـ 1 هتبقى بـ 0، لو الاتنين بـ 0 هتبقى بـ 0. 
Otherwise هتبقى بـ 1، تمام؟ يعني غير كدة هتبقى قيمتها بـ 1.
فدي مش Linearly separable، أو مقدرش أعمل Linear equation 
تعمل لها Separation، فهحتاج أستخدم Multi-layer perceptron. 
أول Layer هتعمل الـ OR problem، تاني Layer هتعمل الـ AND problem. تمام؟ بعدها لما نيجي نحسب الـ XOR problem، هنجيب الـ Not الـ y2 
الـ y2 بتمثل لي solve الـ AND problem.
هنجيب الـ Not ليها، فهتبقى عندنا الـ Value دي بدل ما هتبقى بـ 1 هتبقى بـ 0. 
 فبعدها هنعمل لها And مع 1 1، فـ هيبقى هنا 0 و 1 هيديني 0. 
بعدها هنا ده المفروض بقى 1 عشان عملنا له Not، 
 1...
و 1 هيبقى 1، وده 1 و 0 هيبقى 0، وده المفروض بقى 1
1 و 1 هيبقى 1. بعدها هنـ Combine الـ Two lines دول، فهيبقى هنا فيه Line بيـ Separate ده وفيه Line بيـ Separate ده فكدة قدرنا إن إحنا نعمل Solve للـ XOR problem.
دي الـ Steps للـ Backpropagation algorithm؛ أول حاجة إن إحنا بنبعت للـ Input ل
لـ Neural Network أو الـ Architecture اللي عندي وبنفترض قيم Random
 للـ Weights. تمام؟ بعدها بنمشي Forward زي ما قلنا إن إحنا بنطبق الـ Linear equation بعدها Activation function بعدها بنحسب الـ Output. بعدها بنحسب الـ Error للـ Output..
تمام، بعد ما نحسب الـ Error بنعمل Update للـ Weights
بنعمل Update للـ Weights في الـ Output layer، وبعدها بنعمل Backpropagate
 نـ Update الـ Weights في كل Hidden layer. يعني بنفضل نـ Update في 
الـ Weights لحد ما نوصل إيه؟ للـ Input layer. تمام؟ بعد بقى ما عملنا Update 
للـ Weights إحنا هنعمل..
train تاني، نشوف الـ Weights دي هتطلع Predict صح ولا هتطلع Predict غلط، 
أو نسبة الـ Error اللي فيها قد إيه. تاني حاجة الـ Convolutional Neural Network،
 الـ CNN بيبقى فيه 3 types من الـ Neural layers أول حاجة الـ Convolution layer، دي اللي بتمثلي الـ Filter اللي أنا بعمل له Apply على الـ Input.
بحيث إن أنا أ Extract 
Features معينة، يعني فيه Filters بتـ Extract الـ Horizontal features وفيه بتـ Extract الـ Vertical edges، تمام؟ وكل Filter بيـ Extract Features معينة. تمام؟ وفيه 
الـ Pooling layers، الـ Pooling layers دي هدفها إن هي تقلل الـ Dimensions.
اللي هي موجودة في الـ Input features، وفي نفس الوقت تـ Extract
 Features مهمة، بتقلل عدد الـ Features يعني. وفي الآخر الـ Fully connected layer، اللي هي لما آجي أحسب الـ Output أو مثلاً لو أنا عندي Classification
 بين Multiple classes، فمثلاً هستخدم الـ Softmax function فأنا بعمل بـ Apply مثلاً 
الـ Fully connected layer دي للـ Softmax function بحيث إن هي تحسب لي
 الـ Probability لكل Class.
بحيث ان انا استخدمها في الاول لو أنا عندي Image، الـ Image دي Gray scale فـ يبقى
 الـ Dimension واحد، تمام؟ هيبقى على حسب عدد الـ Pixels دي في عدد الـ Channels اللي هتبقى واحدة. تمام؟ فـ الـ Filter باختلاف الـ Size الـ Filter 
3 في 3، 5 في 5، لو هي Gray scale image فـ يبقى مثلاً الـ Filter ده 3 في 3 بس.
طب لو هي Colored image فـ يبقى 3 في 3 في 3 
الـ 3 التانيين دول هم الـ Dimensions بتاعة الـ Red والـ Green والـ Blue. 
بعدها هنطبق الـ Filter ده على الـ Image ونمشي بـ Stride 1، وبعدين لحد يعني ما نعمل Extract للـ Features ونحسب بقى الـ Image بالـ Dimensions الجديدة بعد ما نعمل Apply للـ Filter عليها.
فيه بقى Padding layer لو إحنا عايزين الـ Input image..
الـ Dimensions اللي فيها تبقى نفس الـ Output image لما نطبق عليها الـ Filter،
 فبنستخدم حاجة اسمها الـ Same padding، أو إن إحنا.. بيبقى ليه Equation.
بنحسب هنعمل Padding قد إيه
 الـ Padding ده بيبقى زي Border حوالين الـ Image، 
بنشوف عدد.. يعني بنشوف الـ Border ده هنعمله كام مرة بحيث إن إحنا نوصل إن
 الـ Input image تبقى هي هي نفس الـ Dimensions الـ Output image.
 الـ Valid padding بيبقى No padding
 إن أنا بستخدم الـ Dimensions بتاعت الـ Image من غير ما أعمل لها...
الـ Pooling layer؛ الـ Pooling layers زي ما قلنا إن هي بتـ Extract 
Features من الـ Input image وفي نفس الوقت بتقلل الـ Dimensions اللي فيها.
 في الـ Pooling layer فيه نوعين فيه Max pooling وفيه Average pooling. 
لو إحنا استخدمنا Pooling layer.. Pooling matrix
 2 في 2 مثلاً وهنطبقها على الـ Image، هتشوف في الـ Max pooling 
هيشوف إيه أكتر قيمة
في قيم الـ Pixels دي، أعلى قيمة في الـ Pixels دي وهياخدها، هيكتبها يعني في 
الـ Matrix الجديدة. تمام؟ وكذلك هيمشي، هنا بيمشي بـ Stride 2،
 يعني هيسيب 2 Pixels ويروح على الـ Pixels اللي بعدها في تاني Stride
 في تاني  Block of pixels هيشوف إيه أعلى قيمة ويضيفها. تمام؟
وكذلك لحد ما إيه يخلص الـ Image.
 في الـ Average pooling هو مبيعملش كدة هو بيروح على أول Block أو في الـ Image بيحسب الـ Average للـ Pixels اللي في الـ Image دي وبعدين يضيفها. وهكذا وبيمشي
 بـ Stride 2
. الـ Recurrent Neural Network، دي Neural Network...
بيبقى فيها At least One feedback loop. 
يعني إيه Feedback loop؟ زي دي اللي هو بياخد الـ Input ويعمل له Path يرجعه تاني لنفس الـ Layer اللي هو كان فيها أو للـ Layer تانية. بس هي بيبقى فيها على الأقل
 One feedback loop.
تمام؟ الفكرة منها إيه؟ إن هي بتاخد الـ Output وتعمل له Mapping تاني مع الـ Input بحيث إن هي تـ Improve الـ Accuracy. وهو بيستخدم في استخدامات كتيرة زي
الـ الـ Sequence prediction. فالـ Architecture بيبقى شكله كدة أول حاجة بيبقى عندي هنا الـ Input features.
وهنا الـ Weight دي الـ Hidden units اللي بنحسب عندها الـ Net input وبنحسب
 الـ Activation function. خدنا الـ Output رجعناه تاني لنفس الـ Hidden units دي مع 
الـ Input عشان يعني إيه يعمل Improve للـ Accuracy.
وبعدين نحسب الـ Output. فلو إحنا عندناThree Hidden..
عندنا Three layers
لو احنا هنشرحها بشكل Simple أكتر، فهي مثلاً بيبقى عندي Input features. ب
يبقى فيه Hidden layer بتحسب عندها الـ Output. هتاخد الـ Output ده، تعمل له Multiplication في الـ Weight..
وتشوف الـ Layer التانية. تمام؟ يعني هنا هيدخل Input features تانية. 
وبعدين هناخد الـ Output من أول Hidden layer،
 هيعمل له Pass على تاني Hidden layer. وبعدين يحسب الـ Output. 
وبعدها ياخد هنا الـ Output دوت يعمل له Multiplication في الـ Weight، 
وهنا ياخد الـ Input..
هيعمل لهم Path على نفس الـ Hidden layer وبعدين يحسب الـ Output وهكذا هي دي فكرة الـ Recurrent Neural Network. فكرة الـ Personal IoT إحنا بيبقى عندنا مجموعة من الـ Wearable..
الـ IoT devices، زي الـ Smartwatch. 
فالـ Wearable IoT devices دي عددها زاد في الفترة الأخيرة بقى من 2016، 
325 مليون Wearable device من الـ IoT زي الـ Smartwatch أو أياً يكن إيه هو 
الـ Wearable device..
و وصل لـ 2020 لـ 830 مليون device. تمام؟ فهو الـ Pattern ده بيوضح.. أو الـ Chart ده بيوضح إزاي عدد الـ Devices اللي إحنا بنستخدمها في الـ IoT بتزيد مع الوقت يعني.
 أول حاجة، الـ Super shoes by MIT
ده من ضمن الـ Applications اللي بنستخدم فيها الـ IoT.
ده فكرته Creative شوية، هي شبه Google Maps بس فيها Creativity
هنشرحه أفضل على الـ Image. ده شكل الـ Shoes، تمام؟ أول حاجة هو بيبقى فيه
Battery عشان تشغل الـ System نفسه، تمام؟ وبيبقى فيه Bluetooth عشان بنـ Connect الـ Shoes..
"بالـ Mobile Application، وبيبقى فيه Micro-controller عشان يعمل Processing
 للـ Information اللي هو بيعمل لها Receive من الـ Mobile Application. إيه هي فكرته أصلاً؟ إن هو بيبقى زي Google Maps. طب إيه هي الـ 3 Vibrotactile Ticklers دي؟ بتستخدم في إيه؟
أول حاجة لما يكون الإنسان ماشي بـ Google Maps ساعات بيبقى محتاج مثلاً إنه Turn right
 أو Turn left، فبيبقى فيه في الـ Left shoes لو الـ 3 
Vibrotactile دي عملت Vibration فده معناه إن الشخص المفروض يـ Turn
left...
طب لو في الـ Right shoes كان فيه Vibration، فده معناه إن الشخص المفروض
 يـ Turn right لو هو رايح مثلاً لمكان وماشي على Google Maps. طب إيه 
الـ Capacitive pad دي؟ دي بقى بتحدد الشخص ده أصلاً بيتحرك ولا لا، وإيه نمط الحركة
 أو إيه سرعة الحركة اللي هو بيمشي بيها؟
فهو فكرة الشوز ده اللي هو كأنه جوجل مابس يقفل فيه 3 Vibrotactile Ticklers دي لو هي عمل في لفت شوز معناية الشخص ده ممكن يتحرك لفت لو هي عمل في الرايد شوز إنه هو يمشي رايد و الكافاسيتوف بادي عشان تتأكد من نمط الحركة للشخص أو إن الشخص ده بيتحرك ولا لأ
وفيه Battery عشان تشغل الـ System، فيه Bluetooth 
عشان يـ Connect بالـ Smartphone، فيه Micro-controller 
عشان يعمل الـ Processing دي أصلاً فدي فكرة الـ Super shoes. تاني Application 
هو الـ Continuous Glucose Monitoring فكرته إيه؟
 إن هو.. الناس اللي عندها Diabetes..
بيساعدهم إنهم يعرفوا نسبة الـ Glucose اللي عندهم في الـ Real time،
 بيقيس نسبة الـ Glucose
 Over time، وكمان بيـ Predict إن في الـ Future هتبقى نسبة الـ Glucose عندهم قد إيه. آخر حاجة الـ Heart monitoring ده بيبقى مثلاً زي Smartwatch بتقيس
 الـ Heart rate للشخص.
Over time، وتـ Predict لو فيه أي حاجة.. Harmful heart conditions 
أو أي حاجة Harmful هتحصل للـ Heart، تمام؟ عن طريق إنه بيقيس الـ Heart rate 
لو هو Too fast اللي هو Above
 100 beats per minute،
أو هو Slow
below 60 beats per minute، فده معناه إن فيه مشكلة هتحصل.