تحطيم بودكاست الحلقة 33 مع تشارلي جيرارد: ما هو التعلم الآلي؟
نشرت: 2022-03-10في هذه الحلقة ، نتحدث عن التعلم الآلي. ما نوع المهام التي يمكننا وضعها في سياق تطوير الويب؟ لقد تحدثت مع الخبير تشارلي جيرارد لمعرفة ذلك.
وتظهر الملاحظات
- تعلم الآلة العملي في JavaScript: TensorFlow.js لمطوري الويب
- تشارلي على تويتر
- موقع تشارلي الشخصي
تحديث اسبوعي
- مقدمة عملية لحقن التبعية
كتبه جيمي كوركهيل - نحو شبكة ويب خالية من الإعلانات: تنويع الاقتصاد عبر الإنترنت
بقلم فريدريك أوبراين - هل يجب على الويب الكشف عن قدرات الأجهزة؟
كتبه نعوم روزنتال - كيفية كسب المزيد من المال من بيع تطبيقات Shopify في عام 2021
بقلم سوزان سكاكا - الشروع في العمل مع حزمة GetX في تطبيقات Flutter
كتبه كيلفن أومريشون
نسخة طبق الأصل
درو ماكليلان: هي مطورة أولية في Netlify ، وخبيرة مطور برامج Google في تقنيات الويب ومتحدثة تقنية في Mozilla. في أوقات فراغها ، تستكشف مجال تفاعل الإنسان مع الكمبيوتر ، وتقوم ببناء نماذج أولية تفاعلية باستخدام الأجهزة والتعلم الآلي والترميز الإبداعي. تتحدث بانتظام في المؤتمرات وتكتب منشورات مدونة لمشاركة الأشياء التي تتعلمها. ومؤخراً ، كان مؤلف كتاب "التعلم الآلي العملي في JavaScript لـ Apress".
درو: لذلك نحن نعلم أنها خبيرة في الواجهة الأمامية ، لكنها فعلت ذلك مرة واحدة للهروب من السجن باستخدام ملف معدني كانت كروشيه من الأحلام. أصدقائي المحطمون ، أهلا وسهلا بكم تشارلي جيرارد. مرحبا تشارلي. كيف حالك؟
تشارلي جيرارد: أنا محطم.
درو: أردت أن أتحدث إليكم اليوم عن التعلم الآلي ، والذي قد يبدو وكأنه موضوع غريب إلى حد ما لملف بودكاست يركز بشكل أساسي على نوع نهاية المتصفح لتطوير الويب. أميل إلى التفكير في التعلم الآلي على أنه شيء يحدث في مراكز البيانات العملاقة أو المختبرات التي يرتديها أشخاص يرتدون معاطف بيضاء. إنها بالتأكيد نوع من الكلمات الطنانة هذه الأيام. ماذا نعني حقًا عندما نقول التعلم الآلي؟
تشارلي: بشكل عام ، سيكون التعريف القياسي هو منح أجهزة الكمبيوتر القدرة على إنشاء تنبؤات دون إخباره بما يجب القيام به. نأمل أن يكون هذا منطقيًا عندما نستمر في الحديث عنه ، ولكن هذا هو نوع التعريف العام للمحادثة. أنت لا تخبر الخوارزميات أو النماذج حقًا بالذهاب والبحث عن أشياء معينة. يتعلمون من خلال البيانات التي تقدمها لهم ويمكنهم بعد ذلك توليد تنبؤات.
درو: بدلاً من الاضطرار إلى كتابة تعليمات برمجية خاصة لظروف معينة ، يمكنك إنشاء حالة عامة حيث يمكن للبرنامج تعلم كيفية القيام بهذه الأشياء بنفسه؟
تشارلي: أجل ، بالضبط.
درو: هذا يبدو مخيفًا بعض الشيء. إنه نوع من الاقتراب من هذا النوع من الذكاء الاصطناعي جانب من الأشياء. هل تحتاج إلى أن تكون الطالب الذي يذاكر كثيرا في الرياضيات أو عالم البيانات للقيام بذلك؟ أو هل هناك أشياء مثل الخوارزميات المعمول بها والأشياء التي يمكنك الاتصال بها للبدء؟
تشارلي: أجل. لذا لحسن الحظ لا تحتاج إلى أن تكون الطالب الذي يذاكر كثيرا في الرياضيات أو عالم البيانات. خلاف ذلك ، بالتأكيد لن أتحدث عن هذا. ولكن هناك خوارزميات تم اكتشافها بالفعل وأدوات متاحة بالفعل تتيح لك استخدام هذه الخوارزميات دون الحاجة إلى كتابة كل شيء من البداية بنفسك. لذلك إذا استخدمنا نظام الواجهة الأمامية كمقارنة ، فيمكنك استخدام واجهات برمجة تطبيقات الويب ، مثل المتصفح للحصول على وسائط المستخدم عندما تريد الوصول إلى كاميرا الويب أو الميكروفون.
تشارلي: وليس عليك أن تعرف كيف تم تنفيذ واجهة برمجة التطبيقات هذه فعليًا تحت الغطاء. ما يهم هو أنك تعرف ما هي فائدة واجهة برمجة التطبيقات هذه وكيفية استخدامها ، إذا كنت تريد ذلك. ثم فيما بعد يمكنك الذهاب وإلقاء نظرة على الكود المصدري لمتصفحك المفضل لمعرفة كيفية عمله حقًا ، ولكنه في الحقيقة ليس مفيدًا في المقام الأول. ويمكن أن يكون مفيدًا إذا كنت تريد كتابة الخوارزمية الخاصة بك لاحقًا. ولكن لكي أكون صادقًا حقًا ، فمن غير المرجح أن ترغب في القيام بذلك.
درو: حسنًا. لذلك فهي تشبه إلى حد ما الطريقة التي يمكنك بها كتابة CSS لوضع عنصر على الصفحة. أنت لا تهتم بالطريقة التي يقوم بها المتصفح في الواقع. أنت تكتب بعض CSS ويتولى المتصفح الاهتمام بها.
تشارلي: أجل. عندما تبدأ ، يكون الأمر في الغالب شيئًا من هذا القبيل.
درو: هذا جيد. هذا نوع من مستواي في علم البيانات.
تشارلي: وأنا أيضًا.
درو: ما نوع المشكلات التي يمكنك وضع التعلم الآلي فيها؟ أي نوع من الأشياء هو جيد ل؟
تشارلي: يعتمد الأمر على ما تريد القيام به في المقام الأول ، لأنه عندما تريد بناء شيء معين ، فإنني أنصح بالتفكير أولاً في نوع المشكلة التي تريد أن تتعلمها والتي ستساعدك بعد ذلك في اختيار خوارزمية تريد يمكن استخدامها لإصلاح أو إيجاد حل لمشكلتك. بشكل عام ، سأبدأ بالتفكير في نوع المشكلة التي أحاول حلها ، وهناك ثلاث مشاكل رئيسية. أعتقد أنه من المحتمل أن يكون هناك المزيد ، ولكن بشكل عام ، لما تم تدريبي على القيام به وما قرأته ، هناك ثلاثة أمور رئيسية مذكورة.
تشارلي: إذا كنت تريد مني الخوض في هذا ، فهناك تعلم خاضع للإشراف وتعلم غير خاضع للإشراف وتعلم معزز. لديك أيضًا الكثير من الإشراف ، ولكن بصراحة ، لا أعرف الكثير عن ذلك لأنني تمكنت من بناء مشاريعي باستخدام المشروعات الثلاثة الأولى.
درو: تحت إشراف وبلا إشراف ومعزز هل قلت؟
تشارلي: نعم ، التعلم المعزز.
درو: حسنًا. إذن ما هو التعلم تحت الإشراف؟ هل يمكنك أن تعطينا مثالاً على ما يعنيه ذلك؟
تشارلي: التعلم الخاضع للإشراف ، يحدث عندما تتكون مجموعة البيانات الخاصة بك من الميزات والتسميات وتغذيها بخوارزمية. لذلك إذا أخذنا مثالًا نأمل أن يتمكن معظم الناس من الارتباط به ، إذا كان لديك منزل وترغب في بيعه ، وتريد معرفة السعر الذي ستبيعه لمنزلك أو السيارة ، بالمناسبة ، ستكون نفس الشيء. ويمكنك استخدام مجموعة بيانات للمنازل في نفس البيئة أو نفس النوع من المنازل ومعرفة سعرها في السوق ، ستكون قادرًا على استخدام ميزات منزلك ؛ كم عدد الغرف وهل فيه حديقة وفي أي حي يقع؟ وأشياء مثل ذلك.
تشارلي: هذه هي الميزات والتسمية ستكون السعر ، وباستخدام كل مجموعات البيانات هذه للمنازل الموجودة حولك بالفعل ، يمكنك استخدام خوارزمية التعلم الآلي التي ستعرف نوعًا ما الارتباط بين ميزات منزلك والاسعار في السوق لتحصل على مميزات بيتك وتكون قادر على توليد ثمن من ذلك. لذا فإن أهم شيء هو التعلم الخاضع للإشراف ، لديك مجموعة من الميزات والتسمية أيضًا ، لذلك يمكنك بالفعل رسم علاقة بين الاثنين.
درو: قد تقوم بتغذية النموذج بمجموعة كبيرة من البيانات حول المنازل في هذا المثال ، حيث تعرف سعرها ومن ثم تعرف كل هذه الميزات عنها. قل غرف النوم وماذا لديك ، مثل اللقطات المربعة ، وأعتقد أن الموقع سيكون نوعًا آخر من الأشياء التي قد يتم أخذها في الاعتبار؟
تشارلي: أجل. لذا فهذه إحدى مشكلات التعلم الآلي هي أنه يمكن أن يكون لديك الكثير من الميزات وبعضها لن يكون فعالًا مثل البعض الآخر أيضًا. لذلك يمكن أن يكون لديك ، على سبيل المثال ، لون منزلك ، قد لا يكون له في الواقع أي ارتباط بالسعر ، ولكن يمكنك تقديم مجموعة من الميزات وسيجد النموذج نفسه ارتباطًا بين الاثنين. يمكنك بعد ذلك تعديل مجموعة البيانات الخاصة بك ، إذا كنت تريد ذلك ، وإزالة اللون ، أو تدرك أن حجم الحديقة لا يهم أو أشياء من هذا القبيل.
تشارلي: بشكل عام ، حتى إذا قمت بتغذية مجموعة البيانات الخاصة بك إلى نموذج ، فلن يكون لديك توقع مثالي في المرة الأولى. عادة ما تقوم بتعديل بعض الأشياء المختلفة وترى. تقوم بتعديله نوعًا ما حتى يصل إلى توقع تعتقد أنه دقيق جدًا.
درو: وبمجرد إنشاء هذا النموذج ، أو القول إنك قمت بإنشائه باستخدام بيانات من مدينة واحدة ، هل يمكنك بعد ذلك أخذ ذلك وإطعامه ... هل تحتاج إلى إطعامه بالبيانات من مدينة أخرى؟ هل ستكون قادرًا على التقاطه واستخدامه في مكان آخر بمجرد الانتهاء من هذا التدريب أم أنه خاص بمجموعة البيانات هذه أو كيف سيعمل ذلك؟
تشارلي: أعتقد أنه سيكون خاصًا بمجموعة البيانات. هذا يعني أنه يمكنك إنشاء مجموعة بيانات أخرى بنفس الشكل ، دعنا نقول. إذا كان لديك جدول بيانات Excel يحتوي على أعمدة مختلفة ، فستتمكن من الاحتفاظ بنفس التسمية والميزات ، ولكن سيتعين عليك استبدالها بقيم تلك المدينة. ولكن بشكل عام ، فهذا يعني أن جمع مجموعة البيانات قد يستغرق الكثير من الوقت أيضًا ، ولكن إذا كنت تعرف بالفعل ما فعلته لمدينة باريس ، على سبيل المثال ، وأن بنية مجموعة البيانات الخاصة بك هي نفسها ، ولكن يمكنك استبدال القيم ، فهي أسرع قليلاً ويمكنك إعادة إنشاء النموذج.
تشارلي: لا يجب إعادة استخدام نفس النموذج ، إذا كانت بياناتك مختلفة لأن أسعار المنازل في باريس تختلف عن مدينة صغيرة في أستراليا ، على سبيل المثال. لذلك لن ترغب في الحصول على بيانات خاطئة لأن جوهر مجموعة البيانات الخاصة بك في البداية لم يكن هو نفسه تمامًا.
درو: نتحدث كثيرًا عن نوع النماذج مع التعلم الآلي. لذا فإن النموذج يشبه إلى حد ما النتيجة النهائية لجميع تحليلات مجموعة البيانات. ثم يتم استخدامه لعمل تنبؤات لاحقة. هذا ما هو النموذج ، أليس كذلك؟
تشارلي: نعم ، هذا بالضبط. إنه نموذج ، لذا فهو يشبه إلى حد ما الوظيفة التي ستقوم بتغذية مدخلات جديدة لم يسبق لها مثيل من قبل ، ولكن بناءً على ما تعلمته في خطوة التدريب. سيكون قادرًا على إخراج توقع.
درو: التعلم الخاضع للإشراف ، ثم يصنع هذا النموذج التنبئي من الملصقات على الميزات. ما هو التعلم غير الخاضع للرقابة؟
تشارلي: إذن فإن عدم وجود إشراف هو من نفس المفهوم إلى حد ما ، لكنك أزلت الملصقات. لذلك في هذه الحالة ، يمكنك أن تعتقد أن مشكلتنا المتمثلة في بيع منزل ، لن تكون حقًا مشكلة تعلم بدون إشراف ، لأنه إذا كنت تعرف فقط ميزات حول المنازل من حولك ، ولكن ليس لديك سعرًا كعلامة تجارية ، فأنت لا يمكن توقع السعر حقًا. لن تعرف حتى ما هو السعر.
تشارلي: إذا كان عدم الإشراف أكثر عندما يكون لديك مجموعة من البيانات ولا يتوفر لديك سوى ميزات عنها. يمكنك إنشاء المزيد من الاتجاهات أو مجموعات الأشياء معًا. لن تستخدم التعلم غير الخاضع للإشراف إذا كنت تريد مخرجات معينة ، إذا كان لديك سؤال معين ، مثل ، "ما هو سعر هذا؟" هذا ليس استخدامًا جيدًا حقًا لغير الخاضعين للإشراف ، ولكنه أكثر من ذلك ، إذا كنت تريد تجميع الكيانات معًا ، فقد يكون ذلك أشخاصًا أو أشياء من هذا القبيل.
تشارلي: عادةً ما تكون حالة الاستخدام لذلك هي توصيات مثل توصيات Amazon أو توصيات Spotify ، مثل ، "يستمع الأشخاص مثلك أيضًا إلى هذا" ، والأهم من ذلك هو المكان الذي توجد فيه الميزات في هذه الحالة ... حسنًا ، لديهم بيانات عنك ، حتى يعرفوا ما تستمع إليه ، أو البلد الذي تتواجد فيه عادةً ، أو كم مرة في اليوم تستمع إلى شيء ما؟ لذا باستخدام هذه الميزات حول الأشخاص ، يمكنهم بعد ذلك وضعك في نفس المجموعة أو نفس النوع من المستمعين ، أو نفس النوع من الأشخاص الذين يشترون أشياء معينة على أمازون. وباستخدام هذا النوع من التعلم غير الخاضع للإشراف ، يمكنهم معرفة ما يجب الإعلان عنه لك أو ما ينصحك بالاستماع إليه بناءً على أشخاص مثلك. لذا فهي أكثر من هذا النوع من المشاكل.
درو: حسنًا ، هذا الأمر يبدو أكثر منطقية بالنسبة لي الآن بصفتي مطور ويب ، لأن هذه الأنواع من الاستخدامات التي تحدثنا عنها ، وتسعير المنزل والتوصيات وخدمة الإعلانات والأشياء ، في نهاية اليوم ، هذه كلها أنواع من الأشياء التي يتعين علينا التعامل معها والميزات التي قد نرغب في وضعها في موقع أو منتج ، أو ما لديك. إذاً لدينا أنواع التعلم المختلفة بناءً على الموضوع الذي نتطلع إلى توقعه. هل هناك أنواع أخرى من التطبيقات يمكننا وضعها معها أيضًا؟ هل هناك نوع من الأمثلة الجيدة التي ابتكرها الناس والتي قد تستخدم هذا؟
تشارلي: أجل. هناك الكثير من الأمثلة. لهذا السبب ، عندما أتحدث عن توقع سعر المنزل ، فربما لا يتعلق الأمر بك. ربما لا يكون الأمر مثيرًا حقًا ، ولكن هناك الكثير مما يمكنك فعله. هناك أمثلة جيدة حقًا. أعتقد أن أول ما رأيته كان حول نصوص فنية تم إنشاؤها ديناميكيًا للصور. لذلك بالطبع هذا شيء يمكنك القيام به بنفسك عند إضافة صورة إلى موقع ما.
تشارلي: ولكن ماذا لو كان لديك موقع يحتوي بالفعل على الكثير من الصور ، وبدلاً من القيام به يدويًا ، يمكنك تغذية كل صورة إلى خوارزمية التعلم الآلي ، وستقوم بإنشاء نص فني لما تدور حوله هذه الصورة ، و ربما تكون الخطوة البشرية الوحيدة هي التحقق من صحة ذلك ، ولكنه سيسمح لك حقًا بتركيز وقتك على إنشاء التطبيق.
تشارلي: وستظل تتيح الوصول إلى موقع الويب الخاص بك من خلال وجود نص فني للصور ، ولكن سيكون نوعًا ما يتم إنشاؤه بواسطة آلة. هذا أحد الأمثلة التي رأيتها عندما بدأت في هذا ، ولكن لديك أيضًا نموذجًا أوليًا للتصفية غير الآمنة لمحتوى العمل. وكنت أفكر في أن هذا سيكون جيدًا حقًا في امتداد Chrome ، يمكن أن يكون لديك امتداد Chrome الذي في كل مرة تفتح فيها صفحة ويب ، ستتحقق فقط مما هو موجود في الصفحة هو نوع من المحتوى الآمن.
تشارلي: على سبيل المثال ، إذا كان لديك أطفال يستخدمون الكمبيوتر المحمول أو أشياء من هذا القبيل ، فيمكنك حينئذٍ إخفاء الصور أو استبدال هذه الصور بباندا ، إذا كنت تريد أو شيء من هذا القبيل. ولكن هذا هو النوع من التطبيقات حيث يمكنك استخدام التعلم الآلي للقيام بأشياء تلقائيًا من أجلك بحيث لا تقلق بشأن مهام معينة ، أو يمكنك فقط استخدام قوة عقلك للقيام بأشياء أخرى.
تشارلي: ولكن هناك المزيد من التقدم مع مثال للتعرف على الإيماءات ، باستخدام كاميرا الويب التي كانت تتواصل بعد ذلك مع Amazon Alexa والتعرف على الصوت وكل هذه الأشياء. لذلك يمكنك حقًا دمج الكثير من التقنيات المختلفة مع الصوت وكاميرا الويب والتعلم الآلي للتعرف فقط والقدرة على التفاعل مع التقنيات المختلفة ، ولكن بطريقة جديدة. لذلك يمكن أن تكون ممتعة حقًا.
درو: هذا رائع للغاية ، لأننا نظرنا إلى نوع من تحليل نماذج البيانات على هذا النحو ، والآن نفكر في النظر إلى محتوى الصور وتحليل محتوى الصور باستخدام التعلم الآلي ، وهو أمر مثير للاهتمام للغاية. أعتقد أن هذا هو نوع الميزة التي يمتلكها Facebook ، إذا نشر شخص ما صورة يعتقد أنها قد تكون دموية أو أظهر إصابة أو شيء من هذا القبيل ، وكان ذلك يطمسها ، ثم عليك فقط النقر فوقها للكشف عنها. هذا النوع من الأشياء ، من الواضح ، لا يمكن أن يكون لدى Facebook فرق من الوسطاء تنظر في كل صورة يتم تحميلها.
تشارلي: آمل ألا يفعلوا ذلك.
درو: ستكون هذه مهمة لا نهاية لها.
تشارلي: هذا ليس عملاً رائعًا أيضًا.
درو: كنت أعمل على موقع ويب مجاني للإعلانات حيث يمكن للأشخاص نشر الإعلانات. وكان هناك الكثير من الاعتدال المتضمن في ذلك ، حتى أنني ، بصفتي مطور ويب ، اضطررت إلى المشاركة في البحث ، والنظر إلى كل هذه الصور قائلاً ، "نعم ، لا ، نعم ، لا."
تشارلي: لقد فعلت ذلك أيضًا. أتمنى أنه في ذلك الوقت كان هناك تعلم آلي ، مجرد أداة مساعدة صغيرة لفعل ذلك من أجلي ، وهي الآن موجودة. لذلك هذا رائع جدًا.
درو: نعم ، هذا رائع حقًا. ومن المثير جدًا التفكير في المدخلات الحية من كاميرا الويب والقدرة على تحليل ذلك نوعًا ما في الوقت الفعلي ، بحيث يمكنك القيام بالتفاعلات القائمة على الإيماءات. هل هذا…
تشارلي: نعم ، في الأساس يستخدم تصنيفًا أكثر للصور ، لأن كاميرا الويب الخاصة بك ، الصورة عبارة عن مجموعة من البكسل ، ولكن بعد ذلك ، أثناء قيامك بإيماءات معينة ، يمكنك تدريب نموذج ليدرك أن يدك اليمنى مرفوعة وربما أنت يتحكم في الماوس مثل هذا ، أو سينظر إلى إحداثيات يدك والشاشة ، وستتبع الماوس. يمكنك حقا أن تفعل ما تريد. ربما يمكنك التعرف على الألوان.
تشارلي: يمكنك فعل أشياء ممتعة حقًا. أحد النماذج الأولية التي قمت بإنشائها ، والتي تخلت عنها نوعًا ما في وقت ما ، لكنني قمت ببناء القليل ... أردت أن يكون امتدادًا لـ Chrome ، لكن هذا لم ينجح. لقد أنشأت تطبيقًا صغيرًا لسطح المكتب باستخدام Electron. أيضًا في JavaScript حيث يمكنني تصفح صفحة ويب فقط عن طريق إمالة رأسي. لذلك سوف يدرك أنه عندما أميل رأسي لأسفل ، فإنه ينتقل لأسفل ، وعندما أصعد ، فإنه يرتفع. لقد كان هذا النوع من التجارب الصغيرة هو ما كنت أفكر فيه ، "حسنًا ، إذا كان بإمكاني تحويله بعد ذلك إلى امتداد Chrome ، فقد يكون مفيدًا لبعض الأشخاص."
تشارلي: حتى لو كنت تأكل أمام جهاز الكمبيوتر الخاص بك وكنت تقرأ الأخبار ولا أريد أن تكون لوحة المفاتيح متسخة ، فيمكنني حينئذٍ إمالة رأسي ، ولكن بعد ذلك آمل أيضًا ، لإمكانية الوصول ، تساعد الأشخاص فعليًا في التنقل في صفحات ويب معينة أو أشياء من هذا القبيل. هناك الكثير من الأدوات المتاحة وتتعلق بفكرة أنه يمكنك الخروج بمراقبة الموقف من حولك ، وكيف يمكنك حل بعض هذه المشكلات باستخدام التعلم الآلي؟
درو: بالنسبة للتعلم الآلي ، غالبًا ما نفكر في اللغات ، بايثون. أعتقد أن هذا هو المكان الذي يبدو أن الكثير من هذا النوع من التطوير يحدث أولاً. لكن بصفتنا مطوري ويب ، من الواضح أننا أكثر راحة مع JavaScript بشكل عام. هل تعلم الآلة شيء يمكننا أن نتوقع فعله بشكل واقعي. أعني أن بعض الأمثلة الممتعة هي شيء واحد ، لكن هل هي مفيدة حقًا للعمل الحقيقي في JavaScript؟
تشارلي: حسنًا ، أعني ، أعتقد ذلك ، لكن بعد ذلك أعرف أن معظم الأشياء التي أقوم بها هي نماذج أولية ، لكنني أعتقد أن ذلك يعتمد بعد ذلك على الموقف الذي تعمل فيه. هناك طرق لتطبيق التعلم الآلي كمطور في وظيفتك اليومية. لكن ما يعجبني حقًا في JavaScript هو حقيقة أنه إذا كنت بالفعل مطورًا للواجهة الأمامية ، فلا داعي للذهاب وتعلم نظام بيئي جديد أو مجموعة جديدة من الأدوات أو بناء جملة جديد ، لغة جديدة. أنت بالفعل في بيئتك التي تعمل فيها كل يوم.
تشارلي: عادةً عندما تتعلم هذا النوع من الأشياء ، عليك نوعًا ما أن تبدأ في وقتك الخاص ، إذا لم تكن وظيفتك اليومية ووقت الجميع ثمين ولم يكن لديك الكثير منه. لذا ، إذا تمكنت من إزالة بعض الحواجز والبقاء في نفس النظام البيئي الذي تعرفه ، فأعتقد أن هذا جيد جدًا ، ولكن يمكنك أيضًا أن تبدأ ... القوة بالنسبة لي في JavaScript هي أنه يمكنك البدء ببناء نموذج أولي صغير لإقناع الناس بأن ربما تكون هناك فكرة تحتاج إلى التحقيق ، ومن خلال القدرة على تطوير شيء ما بسرعة في JavaScript ، يمكنك التحقق من صحة فكرتك.
تشارلي: بعد ذلك ، يمكنك إما الحصول على دعم من القيادة لقضاء المزيد من الوقت أو المزيد من المال ، أو يمكنك بعد ذلك منح ذلك لمطوري بايثون ، إذا كنت ترغب في بنائه في بايثون. لكن بالنسبة لي ، فإن هذه القدرة على التحقق من صحة فكرة ما بسرعة مهمة للغاية. على وجه الخصوص ، ربما إذا كنت تعمل في شركة ناشئة وكان كل شيء يسير بسرعة وكنت قادرًا على إظهار أن هذا شيء يستحق البحث فيه ، أعتقد أن هذا مهم جدًا.
تشارلي: وأيضًا حقيقة وجود نظام بيئي كبير للأدوات وهناك المزيد والمزيد من أطر وتطبيقات التعلم الآلي. في JavaScript ، لا يمكننا إضافة التعلم الآلي على صفحة الويب فقط. كما قلت من قبل ، يمكنك إنشاء ملحقات Chrome وتطبيقات سطح المكتب باستخدام Electron ، وتطبيقات الأجهزة المحمولة باستخدام React Native والأجهزة و IoT مع أطر عمل مثل Johnny-Five.
تشارلي: إذن باستخدام اللغة التي تعرفها بالفعل ، يمكنك بالفعل الوصول إلى نظام بيئي ضخم من الأنظمة الأساسية المختلفة التي يمكنك تشغيل نفس التجربة عليها. وأعتقد أن هذا أمر مذهل بالنسبة لي. وهنا أرى القوة الحقيقية للقيام بالتعلم الآلي في JavaScript. وكلما تحسنت الأمور ، ربما يمكنك حقًا دمجها في التطبيقات التي نبنيها كل يوم.
درو: JavaScript موجود في كل مكان ، أليس كذلك؟
تشارلي: نعم.
درو: للأفضل أو للأسوأ ، إنه موجود في كل مكان. من كان يظن ذلك؟ هذا يبدو رائعًا ولكنه يبدو أيضًا وكأنه نوع من العمل الشاق. وأنا أفكر في مجموعات البيانات والأشياء ، كيف يمكنك البدء في القيام بهذه الأنواع من المهام؟
تشارلي: هناك في الوقت الحالي ، على الأقل مع TensorFlow.JS ، هناك ثلاثة أشياء يمكنك القيام بها باستخدام إطار العمل. ودعونا نقول أن أبسطها هو استيراد نموذج موجود مسبقًا مُدرَّب مسبقًا. هناك عدد قليل منهم ، وهناك نماذج مختلفة تم تدريبها بمجموعات بيانات مختلفة ، وأود أن أوصي بالبدء بهذا لأنك ، يمكنك تعلم الأساسيات حقًا لكيفية استخدام إطار العمل نفسه ، وما يمكنك فعله مع هذه النماذج.
تشارلي: لديك بعض نماذج التعرف على الصور التي تم تدريبها باستخدام صور مختلفة. بعضها أفضل للتعرف على الأشياء. بعضها أفضل للتعرف على الأشخاص ، ومن خلال فهم النماذج التي يجب استخدامها ، يمكننا حينئذٍ أن نكون أحرارًا في بناء ما تريد في قيود هذا النموذج.
تشارلي: لكن أعتقد أن هذه طريقة جيدة للبدء. ما زلت أستخدم النماذج المدربة مسبقًا في الكثير من تجاربي لأنها أيضًا ، لماذا تعيد اختراع العجلة إذا كانت موجودة بالفعل؟ دعنا فقط نستخدم الأدوات التي تم توفيرها. ثم عندما تريد المضي قدمًا ، ربما خطوة أخرى ، يمكنك القيام بما يسمى نقل التعلم ، عندما تعيد تدريب نموذج مهم. لذلك ما زلت تستخدم أحد النماذج المدربة مسبقًا ، ولكن بعد ذلك ستتاح لك الفرصة لإعادة تدريبه على الهواء مباشرة مع العينات الخاصة بك.
تشارلي: على سبيل المثال ، إذا أردت استخدام تصنيف للصور حيث يكون لديك أشخاص مختلفون ، فأنت تريد تصنيف الإيماءات ، ربما. إذا تم تدريب نموذجك ، على سبيل المثال ، مع أشخاص لديهم دائمًا ، لا أعرف ، يدهم اليمنى لأعلى أو شيء من هذا القبيل ، ولكن بالنسبة لتطبيقك ، تريد اليد اليسرى ، يمكنك إعادة تدريب هذا النموذج باستخدام عيناتك من اليسار اليد ، ومن ثم سيكون لديك نموذج تم تدريبه بالفعل على التعرف على اليد اليمنى ، ولكن بعد ذلك ستضيف عينتك الخاصة ويمكنك إعادة تدريب ذلك بسرعة كبيرة في المتصفح ، اعتمادًا على كمية بيانات الإدخال الجديدة التي تقدمها ، يستغرق الأمر بعض الوقت ، ولكن في غضون ثوانٍ قليلة يكون لديك نموذج مُعاد تدريبه جيد جدًا في التعرف على هاتين الإيماءات التي يمكنك استخدامها بعد ذلك في تطبيقك.
تشارلي: هذه عادة ما تكون الخطوة الثانية. ثم الخطوة الثالثة الأكثر تعقيدًا هي القيام بكل شيء في المتصفح. لذا فأنت تكتب النموذج الخاص بك من البداية وتقوم بتدريبه في المتصفح وتقوم حقًا بالتدريب والتشغيل وإنشاء النموذج ، كل شيء في المتصفح. لكن بشكل عام ، التطبيق الوحيد الذي رأيته لهذا هو بناء التصورات. عندما تريد تصور عملية نموذج يتم تدريبه وعدد الخطوات التي يستغرقها ، والوقت الذي يستغرقه ، ويمكنك أن ترى الدقة تتزايد أو تنخفض ، اعتمادًا على الميزات التي تختارها والمعلمات التي تعدلها .
تشارلي: إذن ، لم ألعب بهذا التطبيق لأنني لم أجد تطبيقًا لي أرغب في البناء به ، لكن الخطوتين الأوليين لاستخدام النموذج المدرب مسبقًا فقط أو إعادة تدريبه باستخدام العينات الخاصة بي هما حيث رأيت شخصيًا. لقد استمتعت بذلك.
درو: عادةً ما تكون حالة إنشاء النموذج مسبقًا ، نوعًا ما في وضع عدم الاتصال كما كانت ، وبعد ذلك يستخدم المتصفح هذا النموذج المدرب ، أو ربما يضيف القليل ، إنه يقوم ببعض إعادة التدريب ، ولكن بشكل عام ، سيتم إنشاء هذا النموذج قبل استخدامه في متصفح المستخدم؟
تشارلي: بشكل عام ، نعم. ثم يمكنك بالتأكيد إنشاء النموذج الخاص بك. إذا قمت بذلك ، فلن أوصي بتدريبه في المتصفح ، ولكن يمكنك القيام بذلك في NodeJS أيضًا. إذا كنت تعلم ، فإن القليل من NodeJS. لقد قمت بالتأكيد بإنشاء النماذج الخاصة بي ، لكنني عادةً ما أقوم بتشغيلها في NodeJS لأنها أكثر أداءً قليلاً. ثم أستخدم النموذج الذي أنشأته في المتصفح.
درو: ما هي الأدوات المتاحة للقيام بذلك باستخدام JavaScript؟ لقد ذكرت TensorFlow JS ولكن ما هذا وأين ذلك؟ هل هذا من جوجل؟
تشارلي: نعم. في البداية ، كان لدى Google أداة TensorFlow في Python والآن ، في الماضي ، ربما بضع سنوات ، ربما أكثر قليلاً من إنشاء نسخة JavaScript ، لذلك تميل إلى التدفق مع JS. ولكن هناك أيضًا ML5 JS الذي يعد تجريدًا قليلاً في الأعلى. لذلك إذا كنت مرتبكًا بعض الشيء أو إذا بدت TensorFlow JS مخيفة بعض الشيء مع بعض المفردات التي يستخدمونها في وثائقهم ، فيمكنك استخدام ML5 JS الذي يحتوي على معظم الميزات نفسها ، ولكن دعنا نقول أن API أو Syntax هو قليلا أكثر ودية للمبتدئين.
تشارلي: يمكنك البدء بـ ML5 ، ومعرفة ما إذا كنت تحب التعلم الآلي ، أو إذا كنت تفكر في تطبيق رائع ، ثم إذا كان لديك بعض أدوات الحظر في ML5 أو إذا كان إطار العمل لا يحتوي على أشياء معينة تريد القيام بها ، يمكنك بعد ذلك الانتقال إلى TensorFlow JS إذا كنت تريد ذلك. وإذا لم تكن مهتمًا حقًا بكتابة التعليمات البرمجية الخاصة بك ولكنك تريد فقط استخدام الأدوات الموجودة بالفعل ، فهناك بعض واجهات برمجة التطبيقات من Amazon و Google و Microsoft للقيام بالتعرف على الصور أو التعرف على الصوت أيضًا. لذا ، إذا كنت مهتمًا أكثر برؤية ما يمكنه فعله ، لكنك لا تريد قضاء الكثير من الوقت في كتابة الكود ، فيمكنك اختبار اتصال بعض واجهات برمجة التطبيقات وتجربة بعض أدواتها أيضًا.
درو: هذا مثير جدًا للاهتمام. لذلك ربما يمكنك استخدام المتصفح لالتقاط المدخلات من كاميرا الويب أو الميكروفون أو ما لديك ، ثم إرسال ذلك إلى Amazon أو Microsoft أو أي شخص آخر ثم السماح لهم بالقيام بالعمل الشاق؟
تشارلي: أجل.
درو: وبعد ذلك تستفيد فقط من النتائج.
تشارلي: بالضبط.
درو: يبدو هذا وكأنه طريقة لطيفة ومغرية لمجرد البدء في الأفكار. يبدو الأمر رائعًا ولكن ما المشكلات التي يمكننا تطبيق هذا عليها في الواجهة الأمامية؟ لقد تحدثنا عن بعض الأشياء الصغيرة ، ولكن هل هناك طرق أخرى يمكننا استخدامها؟
تشارلي: هناك العديد من الطرق. إذا بدأت بتصنيف الصور ، نعم يمكنك ذلك. يمكنك استخدام الصور من الويب أو من كاميرا الويب على هاتفك. إذا كنت تستخدم موقع الويب الخاص بك على هاتفك فقط ويمكنك التقاط صور والتعرف على الأشياء ، وإما أن تفعل ... كان الشيء الصغير الذي قمت بإنشائه حول إعادة التدوير ، حيث إذا كنت لا أعرف حقًا مكان وضع أشياء معينة في أي سلة ، فإننا لديك سلة المهملات الصفراء ، والأخضر ، وهذا يعتمد على البلدان. لديهم ألوان مختلفة ، لكن في بعض الأحيان لا أجيد معرفة مكان إلقاء الأشياء فعليًا حتى تتمكن من بناء أدوات صغيرة مثل هذه ، يمكن للعيش التعرف على كائنين أمامك ثم تصنيفهما ويمكنك بناء أشياء معينة مثل هذه.
تشارلي: بخلاف ذلك ، لديك تصنيف للنص حيث استخدمت في وقت سابق من هذا العام أحد نماذج TensorFlow GS للنظر في التعليقات المكتوبة ومشكلات GitHub و GitHub PRs لتصنيفها ثم قولها ، "مرحبًا ، إذا كان تعليقًا سامًا ، إذن لديك روبوت صغير يقول ، "مرحبًا ، ربما لم يكن عليك كتابة هذا ،" أو ، "احذر ، إنه سام بعض الشيء. نريد أن يكون هذا مكانًا آمنًا "." لذا يمكنك استخدام تصنيف النص من هذا القبيل.
تشارلي: هناك تصنيف صوتي إذا كنت ترغب في ذلك ، حيث عندما أصدرت Apple ساعتها الجديدة ، OS ، كان لديهم شيء للتعرف على صوت المياه الجارية ، لإخبار الناس ، وغسل أيديهم لمدة 20 ثانية مع وباء COVID ، ولكن يمكنك فعل ذلك ذلك في JavaScript أيضًا. وهذا الشيء الذي كان مثيرًا للاهتمام حقًا ، كنت أشاهد بعض مقاطع الفيديو وقلت ، "أوه ، أعرف كيف أفعل ذلك في JavaScript."
تشارلي: لقد بنيت نموذجًا أوليًا صغيرًا. لا أعرف ما إذا كان يعمل على ساعة آبل. يمكن. ليس لدي واحد ، لكنني أعلم أنه يعمل على هاتفي وجهاز الكمبيوتر المحمول الخاص بي. ومن ثم يمكن أن يبدأ ذلك ببعض الأفكار لأشخاص آخرين أيضًا ، حيث يمكن أن يبدأ صديق لي ، Ramon Huidobro ،hola_soy_milk على Twitter. لقد شارك في الكثير من المؤتمرات عبر الإنترنت هذا العام. وإحدى مشكلته هي أنه عندما يصفق ليصفق لشخص ما ، فلن يكون لديه الوقت لإضافة رمز تعبيري التصفيق إلى الدردشة أيضًا. وما أراد أن يفعله هو الاستماع إلى صوت تصفيقاته وهذا من شأنه إرسال رموز تعبيرية تصفيق تلقائيًا في الدردشة.
تشارلي: ومن الأشياء الصغيرة مثل هذه أنه إذا كنت تريد ربما يكون تطبيقًا أكثر فائدة حقًا في وظيفتك اليومية حول الجلب المسبق التنبئي. يستخدم هذا أيضًا التعلم الآلي في الواجهة الأمامية حيث تبحث في تحليلات موقع الويب الخاص بك. إذن ما الصفحات التي يتم النظر إليها عادةً بعد ذلك ، وأشياء من هذا القبيل. يمكنك جلب الموارد مسبقًا بناءً على الصفحة التي من المرجح أن تتم زيارتها بعد ذلك. هذا شيء كنت أرغب في النظر فيه هذا العام بأكمله ، لكن لم يكن لدي الوقت ، لكن هذا يسمح لك حقًا بتحسين الأداء وتجربة المستخدم لصفحتك. وأنت لا تطلب موارد لن تحتاجها ، حتى يتحسن ذلك حقًا ، وهذا أيضًا تطبيق للتعلم الآلي.
تشارلي: إذن يمكنك القيام بأشياء ممتعة ، أو القيام بمزيد من الأشياء المفيدة ، ولكن لا يوجد تطبيق خاطئ ، يمكن أن يكون هناك تطبيقات خاطئة. سأستعيدها ، لكني أقول فقط أنه إذا كنت قد بدأت بالفعل في ذلك ، فلا حرج في البدء بشيء ممتع ، وبعد ذلك يمكنني طرح بعض الأفكار عن شيء يمكنك القيام به في الوظيفة نحن سوف.
درو: أعتقد أن الشيء المفيد حقًا هنا هو معرفة أن هذه الأشياء ممكنة. وفي الواقع مجرد طرق إبداعية لحل المشكلات يمكننا حلها بمفردنا. تقليديًا ، قمنا ببناء الأشياء عن طريق الإشراف على المحتوى المقدم من المستخدم ، وكان ذلك بدائيًا إلى حد ما وكان علينا في الأساس أن نجعل البشر ينظرون إلى الأشياء ويتخذون قرارات بشأنها. ولكن من خلال الوصول إلى التعلم الآلي ، في هذا المثال ، يمكننا تسليم المزيد من ذلك ثم جعل البشر ينظرون إلى الحالات المتطورة ، على سبيل المثال ، الأشياء التي لم يكن لها تطابق مقنع.
درو: بالطبع سيحدث ذلك بعد ذلك ، لقد حان الوقت مسبقًا لتطوير هذا الشيء ووضعه في مكانه الصحيح ، ولكن بعد ذلك تفكر في المدخرات الناتجة عن عدم قيام البشر بفحص الأشياء يدويًا. ما الأشياء التي يمكنك رؤيتها لاستخدامها في المستقبل مع تحسن التكنولوجيا؟
تشارلي: بالنسبة لي ، ربما في المستقبل ، أعتقد أن النماذج تصبح أصغر حجمًا في التحميل وتصبح أكثر أداءً وربما نقوم بتحسين مجموعات البيانات التي تم تدريبها عليها. آمل أن أتمكن من رؤية أدوات أكثر فائدة. أعني ، شخصيًا ، أنا مهتم بتلك النماذج الصغيرة للتعلم الآلي التي يمكن أن تعمل على المتحكمات الدقيقة لبناء الأشياء. ولكن إذا بقينا في عالم الواجهة الأمامية ، فإنني آمل أن يكون التعرف على الصوت أفضل لأنني أشعر أننا معتادون على التنقل عبر الويب باستخدام لوحة التتبع أو لوحة المفاتيح ، ولكن في الوقت الحالي ، لا يزال هناك التعرف على الصوت ، لكنه ليس دائمًا دقيقًا للغاية ، أو ليس دقيقًا مع اللهجات ، على سبيل المثال. وآمل أنه أثناء تطويرنا لنماذج أفضل لن يخاف الأشخاص الأصغر من إضافتها إلى موقع الويب الخاص بهم لأن ذلك لن يؤثر على الأداء بشكل سيء.
تشارلي: أنا مهتم باستخدام التعلم الآلي في أشياء مثل الجلب المسبق التنبئي حتى نتمكن من إنشاء مواقع ويب أكثر ذكاءً تعمل على تحسين التجربة على نطاق ، لأنه بالنسبة للمستخدمين ، يكون ذلك أفضل لأن الصفحة سيتم تحميلها بشكل أسرع ، وبالتالي الأداء بشكل عام من موقعك ، إنه أفضل. ولكن لنفترض أيضًا أنه إذا فكرنا في الاستدامة ، فإن عدم طلب موارد غير مجدية يساعد أيضًا ، البصمة الكربونية لموقعك على الويب. ولكن هناك أيضًا البصمة الكربونية لنماذج التعلم الآلي. هذا ليس جيدًا جدًا. لذا ربما دعونا لا نتحدث عن هذا. أعتقد أنه بالنسبة للمستقبل ، آمل فقط أن يكون لديّ نماذج ربما تكون أكثر أداءً أو أصغر حجمًا بحيث يكون الناس أكثر احتمالاً لتجربتها ، لأننا لنفترض أنه سيكون هناك عدد أقل من الحواجز للأشخاص للذهاب إلى هذا ، لكن دعنا نرى.
درو: هل هناك قيود وقيود معروفة يجب أن نكون على دراية بها قبل الشروع في مشروع التعلم الآلي؟
تشارلي: أجل. هناك. أعتقد أنه بغض النظر عما إذا كنت تفعل ذلك في JavaScript أو Python ، فهناك حدود. أعتقد أنك إذا كنت ترغب في بناء شيء ما ، يكون مخصصًا جدًا ، ولا يوجد نموذج مدرب مسبقًا له ، أحد الحدود هو أنك قد تحتاج إلى الكثير من البيانات وليس كل شخص لديه ذلك. So if you're doing something on your own as a side project, and you can't find the data set, it would actually take you quite a long time to get one that would allow you to generate good predictions. You can build a small data set, but you will not be able to push it to production or something if you don't actually have a data set that's consistent enough. So I think the amount of data that you need, training the models can take a lot of time.
Charlie: That depends on the amount of data that you feed it, but depending on the application that you want to will build it with, you have to be aware that it can take a lot of time. I remember when I got started and I was doing it in Python and I wanted to… I forgot what I wanted to do, but my model was running for, it was training for eight hours. And at the end it told me that it failed because of something. And I was like, “You're telling me that at the end, after eight hours,” so it can be a bit frustrating and it can still be experimental and you have to be comfortable with it not being a pure science, not everything is always accurate.
Charlie: At the moment, as some of the models are still, they can be a few megabytes, if you are building something that you know, is most likely going to be seen on a mobile screen, you might want to take into consideration that, well, you don't want to load all that data over 4G network. You might want to warn people that they should be on Wi-Fi or the battery use, or the type of phones can't really handle all of this as well. And then more seriously in terms of liability, you do have to understand why your model predicted certain things. And that can be difficult because the model is a black box. It's a function that you don't really know what's inside. You know what it predicted and based on what you're building, if it makes certain decisions about, I don't know, who gets a loan or who goes to prison, based on whatever, you want to be able to explain how you got to that decision.
Charlie: If you decided to use machine learning to kind of abstract some of the work, so it wouldn't be done by people. That can be quite dangerous, so you have to know what you're doing, and in the end, just remember that it's not perfect. I think people sometimes assume that because we talk about artificial intelligence is just as smart as people, but no, it's still computers. It's still data that is given to them and they make up some predictions and somehow we just trust it, which is scary. But yeah, that's some of the limitations.
درو: نعم. I guess it may seem like it's intelligent, but it is still artificial. There've been some quite high profile cases in recent times particularly around some of the machine learning stuff with image recognition that have raised issues of bias in machine learning, for example, a model only detecting humans if they have light skin. Are there ethical considerations that we should be making here?
Charlie: To me, that sounds like a really interesting side of machine learning. And that's also why, before I was saying that, remember that it's not perfect. Sometimes I feel like people think that the machine just happens to be right and know all the things by itself, but it's still something that we program. And when an algorithm products or generates a biased result, the algorithm just generated things based on the data that it was given before. So an algorithm itself or a model is not going to know the difference in society between light-skinned people or dark-skinned people. It doesn't know and it doesn't care. The only thing that it knows is that I got given pictures of certain people and I'm just going to generate based on what I know.
Charlie: And the data set that is given to the algorithm is in general generated by us, by people. Maybe it's not the developer using the model, but at some point somebody put together a data set. And I think it's important to remember that we are responsible for making sure that the predictions generated are as fair as possible and as unbiased as possible. And that creates interesting questions then, because then you can go into, “Well, what is fair for people?” or if we think about my example of the GitHub action that I created to look at toxic comments, well, maybe what I think is toxic is not the same thing as what other people think is toxic.
Charlie: It's interesting. There's a really interesting collection of videos by MIT media lab around the ethics and governance of artificial intelligence, and I find that fascinating because it's not about telling people, “Oh, you're a bad person because you used in algorithm that's biased,” or, “You're a bad person because you produced a model that's biased.” Its more about raising certain questions and helping you realize, “Well, actually, maybe I could be better,” because that surface that, “Yes, I forgot to add diverse people to my data set. Let me fix that.” It's not really about say, “Let's not use that model ever again.” Just retrain it. Realize that, “Oh, I forgot this. I can retrain it and we can make it better.” And that's something that I definitely think is interesting.
Charlie: And you have companies really trying to improve on that. When the issue of Google who was translating certain neutral languages into gendered languages, and all of a sudden engineer was male and cook was female. Now they know they've really reworked on that and it's a lot more unbiased and they use the 'they' pronoun as well. They also really try to make it better, but then you have also weird stuff where I think IBM had created a data set called Diversity in Faces, that was supposed to be one of the very few that I said that actually had a diverse spectrum of people. But when I tried to find it to use it, it's not available anymore. So I'm like, “Oh, you had this good initiative. You try to do better than a lot of other people, and now people are going to actually use it.” I don't know, but I think the question is really fascinating because he can really help us improve. And then we improve the tool as well that we're using.
Drew: I guess it pays just to be really careful to be balanced and be diverse when selecting data for training models. I guess that's what it comes down to, isn't it?
Charlie: Yeah. Well, I mean, you're building a tool for the public, in general, right? If it's a tool that everybody can use, so it should reflect everybody really, or you should be really clear and say, “This tool can only be used by these people because the model was trained that way, but it's not really what we should do.” I understand that sometimes it if you've never thought about it, it can be I don't know, you can see it as a burden. I hate that people would think of it that way, but it's also, if you spent all this time, maybe writing your own algorithm or generating your own model and doing all of this work, you can't tell me that finding a diverse data set is the hardest part. I don't think it would be. So I'm hopeful, and I think as more people raise concerns about this, and I think people are watching this space, which is really good because if companies don't do it, they'll do it if we tell them that it's not right. And if you want the adoption of machine learning models, you have to make sure that everybody can use them.
Drew: Of the various tools that are available for doing machine learning in JavaScript, you've worked a lot with TensorFlow JS and you've written a book about it. Tell us about your book.
Charlie: Yes, I did. I did write a book this year about TensorFlow JS. So to help JavaScript developers learn more about machine learning and understand it better. And I think the main goal of this book was to help people dive into machine learning, but making it less scary, because I know that at first I thought about machine learning as this big thing, completely different from the web development that I would never understand anything about. I didn't think that I would have to write my own algorithms and really understand math. And as I've dived into this over the past two and a half years, I realized that it's not really like that. And I was hoping that writing this book could help people realize as well that they can do it and what can be done.
Charlie: And there's also a few projects that you can really put in practice what you're learning, but it was really aimed at people who haven't really looked into ML yet, or who just are curious to learn more. I'm not really diving into the algorithms like the source code of the algorithms, but it's really more telling people, trying to understand what an algorithm does and which one to use and for what. A bit of what we just talked about, but it's explaining contents in a clear way, so hopefully it's less scary and people want to hopefully dive a bit more into it.
Drew: So it's called Practical Machine Learning In JavaScript and is available from Apress, and we'll link it up in the show notes. So I've been learning all about machine learning today. What have you been learning about lately, Charlie?
Charlie: Let's say a thing that I'm diving into that is related to machine learning or I will use machine learning with it, but it's digital signal processing that I want to use with machine learning. As we've talked about the fact that machine learning needs a lot of data, if you want to build your own models, sometimes you have to filter your data to actually get the right prediction. And if we think about it, let's think about noise canceling headphones. In your day-to-day life, you have a lot of noise around you. Let's say you're trying to watch a video on the train and there's people talking around you, and there's a sound of the train. And what you want to focus on is the sound of the video.
Charlie: With digital signal processing, that would be a little bit like your noise canceling headphones, where there's some noise around that you don't care about. So there's some data that you don't want to listen to, and the noise canceling headphones allow you to focus on the sound coming from the video on your phone, so that you can really truly listen and focus on that. What I'm doing with digital signal processing is that I have a bunch of data from a piece of hardware, like an Arduino, but I know that there's a lot of it that I might not care about. I want to filter out the things that I don't care about, so that then I can feed that to a model and get better predictions about gestures or things like that. So you have your data signal that you can either transform or filter.
Charlie: It's like when you use the web API to get sound from your microphone, you can either see the arrays of numbers on your dev tools, or you can transform it into a spectrogram to see the picture of the sound. And that's a little bit of that. To have a better prediction for gestures based on hardware data, I can transform that signal. I've been wanting to do this for a couple of years, but it's something that I know nothing about. It takes time to learn, but now that I know a bit more about the machine learning side, I can learn the digital processing side and I'm getting there. I like this moment where I'm like, “Oh, I start to get it because I spent all this time on it.” And yeah, that's, that's really interesting. I'm going to have you going a bit.
Drew: Charlie you're such a nerd. If you dear listener would like to hear more from Charlie, you can find her on Twitter, where she's @devdevcharlie and her personal website includes links to lots of our experiments and projects, and it's really worth checking out at charliegerard.dev. Her book Practical Machine Learning In JavaScript is available now, and we'll link to that in the show notes. Thanks for joining us today. Charlie, did you have any parting words?
تشارلي: تذكر أن تحصل على بعض المرح. لقد تحدثنا كثيرًا اليوم عن الأشياء الممتعة ، ثم الأشياء العملية ، ولكن إذا كنت على استعداد للنظر في هذا ، فتذكر أن تحصل على بعض المرح ، بغض النظر عما تقرر بناءه.