التعلم العميق باستخدام Python: دليل المبتدئين إلى التعلم العميق



ستزودك هذه المقالة بمعرفة شاملة ومفصلة عن التعلم العميق باستخدام Python ومدى فائدته في الحياة اليومية.

هو أحد أهم الموضوعات في 2018-2019 ولسبب وجيه. كان هناك الكثير من التطورات في الصناعة حيث حان الوقت عندما تحل الآلات أو برامج الكمبيوتر بالفعل محل البشر. هذه التعلم العميق مع بايثون ستساعدك المقالة على فهم ما هو بالضبط التعلم العميق وكيف أصبح هذا الانتقال ممكنًا. سأغطي الموضوعات التالية في هذه المقالة:

علوم البيانات ومكوناتها

حسنًا ، علم البيانات شيء موجود منذ زمن طويل. علم البيانات هو استخراج المعرفة من البيانات باستخدام تقنيات وخوارزميات مختلفة.





الجدول الزمني للذكاء الاصطناعي - التعلم العميق باستخدام لغة Python - Edureka

هي تقنية تمكن الآلات من محاكاة السلوك البشري. الفكرة وراء الذكاء الاصطناعي بسيطة إلى حد ما ولكنها رائعة ، وهي صنع آلات ذكية يمكنها اتخاذ القرارات بمفردها. لسنوات ، كان يُعتقد أن أجهزة الكمبيوتر لن تضاهي أبدًا قوة الدماغ البشري.



حسنًا ، في ذلك الوقت لم يكن لدينا بيانات وقوة حسابية كافية ، ولكن الآن مع البيانات الكبيرة مع ظهور وحدات معالجة الرسومات ، أصبح الذكاء الاصطناعي ممكنًا.

مجموع أرقام الرقم في جافا

هي مجموعة فرعية من تقنيات الذكاء الاصطناعي التي تستخدم الأساليب الإحصائية لتمكين الآلات من التحسين مع الخبرة.



تعلم عميق هي مجموعة فرعية من ML والتي تجعل حساب الشبكة العصبية متعددة الطبقات ممكنًا. يستخدم الشبكات العصبية لمحاكاة اتخاذ القرارات الشبيهة بالإنسان.

الحاجة إلى التعلم العميق

خطوة نحو الذكاء الاصطناعي هي التعلم الآلي. التعلم الآلي هو مجموعة فرعية من الذكاء الاصطناعي ويستند إلى فكرة أنه يجب منح الآلات إمكانية الوصول إلى البيانات ، ويجب تركها لتتعلم وتستكشف بنفسها. يتعامل مع استخراج الأنماط من مجموعات البيانات الكبيرة. لم يكن التعامل مع مجموعات البيانات الكبيرة مشكلة.

  • خوارزميات التعلم الآلي لا يمكن معالجة البيانات عالية الأبعاد - حيث لدينا عدد كبير من المدخلات والمخرجات: تقريب آلاف الأبعاد. يصبح التعامل مع مثل هذا النوع من البيانات ومعالجته أمرًا معقدًا للغاية وشامل الموارد. هذا يسمى لعنة الأبعاد.

  • التحدي الآخر الذي واجهته هو تحديد الميزات المراد استخراجها . يلعب هذا دورًا مهمًا في التنبؤ بالنتيجة وكذلك في تحقيق دقة أفضل. لذلك ، بدون استخراج الميزة ، يزداد التحدي الذي يواجه المبرمج لأن فعالية الخوارزمية تعتمد إلى حد كبير على مدى ثاقبة المبرمج.

الآن ، هذا هو المكان الذي جاء فيه التعلم العميق للإنقاذ. التعلم العميق هو قادرة على التعامل مع البيانات عالية الأبعاد وهو فعال أيضًا في مع التركيز على الميزات الصحيحة من تلقاء نفسها.

ما هو التعلم العميق؟

التعلم العميق هو مجموعة فرعية من التعلم الآلي حيث يتم استخدام خوارزميات التعلم الآلي المماثلة للتدريب وذلك لتحقيق دقة أفضل في تلك الحالات التي لا يكون فيها أداء الأول على مستوى العلامة. في الأساس، يحاكي التعلم العميق الطريقة التي يعمل بها دماغنا أي أنه يتعلم من التجربة.

وانت عارف،يتكون دماغنا من بلايين الخلايا العصبية يتيح لنا القيام بأشياء مذهلة. حتى عقل الطفل الصغير قادر على حل المشكلات المعقدة التي يصعب حلها حتى باستخدام أجهزة الكمبيوتر الخارقة. إذن ، كيف يمكننا تحقيق نفس الوظيفة في البرنامج؟ الآن ، هذا هو المكان الذي نفهم فيه الخلايا العصبية الاصطناعية (بيرسبترون) و شبكة اعصاب صناعية.

Perceptron والشبكات العصبية الاصطناعية

يدرس التعلم العميق الوحدة الأساسية للدماغ والتي تسمى خلية الدماغ أو الخلايا العصبية. الآن ، دعونا نفهم وظيفة الخلايا العصبية البيولوجية وكيف نحاكي هذه الوظيفة في الإدراك أو الخلايا العصبية الاصطناعية.

  • Dendrite: يستقبل إشارات من الخلايا العصبية الأخرى
  • جسم الخلية: تجمع كل المدخلات
  • محور عصبي: يتم استخدامه لنقل الإشارات إلى الخلايا الأخرى

عصبون اصطناعي أو أ بيرسبترون هو نموذج خطي يستخدم للتصنيف الثنائي. إنه يصمم خلية عصبية بها مجموعة من المدخلات ، كل منها يُعطى وزنًا محددًا. تحسب الخلايا العصبية بعض الوظائف على هذه موزون المدخلات ويعطي المخرجات.

يستقبل مدخلات n (المقابلة لكل ميزة). ثم يجمع تلك المدخلات ، ويطبق التحويل وينتج المخرجات. لها وظيفتان:

  • خلاصة
  • التحول (التنشيط)

يُظهر الوزن فعالية مُدخل معين. كلما زاد وزن المدخلات ، سيكون لها تأثير أكبر على الشبكة العصبية . من ناحية أخرى، انحياز، نزعة هو معلمة إضافية في Perceptron الذي يستخدم لضبط الإخراج جنبًا إلى جنب مع المجموع المرجح لمدخلات الخلايا العصبية مما يساعد النموذج بطريقة تناسب البيانات المحددة بشكل أفضل.

وظائف التنشيط يترجم المدخلات إلى مخرجات. يستخدم عتبة لإنتاج المخرجات. هناك العديد من الوظائف التي يتم استخدامها كوظائف تنشيط ، مثل:

  • الخطية أو الهوية
  • وحدة أو خطوة ثنائية
  • السيني أو اللوجستي
  • تانه
  • ReLU
  • سوفت ماكس

حسنا. إذا كنت تعتقد أن Perceptron يحل المشكلة ، فأنت مخطئ. كانت هناك مشكلتان رئيسيتان:

  • طبقة واحدة Perceptrons لا يمكن تصنيف نقاط البيانات غير القابلة للفصل خطيًا .
  • المشاكل المعقدة التي تنطوي على الكثير من المعلمات لا يمكن حلها عن طريق Perceptrons أحادية الطبقة.

ضع في اعتبارك المثال هنا والتعقيد مع المعلمات المتضمنة لاتخاذ قرار من قبل فريق التسويق.

لا يستطيع أحد الخلايا العصبية استيعاب الكثير من المدخلات ولهذا السبب سيتم استخدام أكثر من خلية عصبية واحدة لحل هذه المشكلة. الشبكة العصبية هي حقًا مجرد امتداد تكوين Perceptrons ، متصلة بطرق مختلفة وتعمل على وظائف التنشيط المختلفة.

  • عقد الإدخال توفير المعلومات من العالم الخارجي للشبكة ويشار إليهما معًا باسم 'طبقة الإدخال'.
  • العقد المخفية إجراء الحسابات ونقل المعلومات من عقد الإدخال إلى عقد الإخراج. تشكل مجموعة العقد المخفية 'طبقة خفية'.
  • عقد الإخراج يشار إليها مجتمعة باسم 'طبقة المخرجات' وهي مسؤولة عن الحسابات ونقل المعلومات من الشبكة إلى العالم الخارجي.

الآن بعد أن أصبحت لديك فكرة عن كيفية تصرف المدرك والمعلمات المختلفة المعنية والطبقات المختلفة للشبكة العصبية ، دعنا نواصل هذا التعلم العميق مع مدونة Python ونرى بعض التطبيقات الرائعة للتعلم العميق.

تطبيقات التعلم العميق

هناك العديد من التطبيقات للتعلم العميق في الصناعة ، وهنا عدد قليل من التطبيقات المهمة الموجودة في مهامنا اليومية.

  • التعرف على الكلام

  • الترجمة الآلية

  • التعرف على الوجه ووضع العلامات التلقائي

  • المساعدون الشخصيون الافتراضيون

  • سيارة ذاتية القيادة

  • روبوتات المحادثة

لماذا بايثون للتعلم العميق؟

  • هي إحدى هذه الأدوات التي لها سمة فريدة ، وهي أن تكون لغة برمجة للأغراض العامة كما يجري سهل الاستخدام عندما يتعلق الأمر بالحوسبة التحليلية والكمية.
  • انه جدا سهل الفهم
  • بايثون مكتوب ديناميكيًا
  • ضخم
  • مجموعة واسعة من المكتبات لأغراض مختلفة مثل Numpy و Seaborn و Matplotlib و Pandas و Scikit-Learn

الآن يكفي من الناحية النظرية ، دعنا نرى كيف يمكننا بدء التعلم العميق باستخدام Python بمثال صغير ولكنه مثير.

التعلم العميق باستخدام بايثون: مثال على Perceptron

الآن أنا متأكد من أنكم يجب أن تكونوا على دراية بعمل ' أو' بوابة. الإخراج واحد إذا كان أي من المدخلات أيضًا واحد.

لذلك ، يمكن استخدام Perceptron كفاصل أو خط قرار يقسم مجموعة الإدخال من بوابة OR ، إلى فئتين:

الفئة 1: المدخلات التي لها مخرجات مثل 0 والتي تقع تحت خط القرار.
صف 2: المدخلات التي لها مخرجات مثل 1 والتي تقع فوق خط القرار أو الفاصل.

التحميل الزائد مقابل التجاوز في جافا

حتى الآن ، فهمنا أنه يمكن استخدام المستشعر الخطي لتصنيف مجموعة بيانات الإدخال إلى فئتين. لكن كيف تصنف البيانات بالفعل؟

رياضيا ، يمكن التفكير في المستشعرات كمعادلة للأوزان ، والمدخلات ، والتحيز.

الخطوة 1: استيراد كل المكتبة المطلوبة

سأستورد هنا مكتبة واحدة فقط ، أي TensorFlow

استيراد tensorflow مثل tf

الخطوة 2: تحديد متغيرات المتجهات للإدخال والإخراج

بعد ذلك ، نحتاج إلى إنشاء متغيرات لتخزين المدخلات والمخرجات والتحيز لـ Perceptron.

train_in = [[0،0،1] ، [0،1،1] ، [1،0،1] ، [1،1،1]] train_out = [[0] ، [1] ، [1] ، [1]

الخطوة 3: تحديد الوزن المتغير

هنا سوف نحدد متغير الموتر للشكل 3 × 1 لأوزاننا ونخصص بعض القيم العشوائية له في البداية.

w = tf متغير (tf.random_normal ([3 ، 1] ، بذرة = 15))

الخطوة 4: تحديد العناصر النائبة للإدخال والإخراج

نحتاج إلى تحديد العناصر النائبة حتى يتمكنوا من قبول المدخلات الخارجية أثناء التشغيل.

x = tf.placeholder (tf.float32، [None، 3]) y = tf.placeholder (tf.float32، [بلا، 1])

الخطوة 5: حساب وظيفة الإخراج والتنشيط

كما تمت مناقشته سابقًا ، يتم أولاً ضرب المدخلات التي يتلقاها المستشعر في الأوزان المعنية ثم يتم جمع كل هذه المدخلات المرجحة معًا. ثم يتم تغذية هذه القيمة المجمعة للتنشيط للحصول على النتيجة النهائية.

الإخراج = tf.nn.relu (tf.matmul (x، w))

ملاحظة: في هذه الحالة ، لقد استخدمت ريلو كوظيفة التنشيط الخاصة بي. أنت حر في استخدام أي من وظائف التنشيط حسب حاجتك.

الخطوة 6: احسب التكلفة أو الخطأ

نحتاج إلى حساب التكلفة = متوسط ​​الخطأ التربيعي الذي لا يمثل سوى مربع الفرق بين ناتج الإدراك والإخراج المرغوب.

الخسارة = tf.reduce_sum (tf.square (الناتج - y))

الخطوة 7: تقليل الخطأ

الهدف من المدرك هو تقليل الخسارة أو التكلفة أو الخطأ. لذلك نحن هنا بصدد استخدام مُحسِّن النسب المتدرجة.

Optimizer = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss)

الخطوة 8: تهيئة جميع المتغيرات

يتم تعريف المتغيرات فقط بـ tf متغير. لذلك ، نحتاج إلى تهيئة المتغيرات المحددة.

init = tf.global_variables_initializer () sess = tf.Session () sess.run (init)

الخطوة 9: تدريب Perceptron في التكرارات

نحن بحاجة إلى تدريب إدراكنا ، أي تحديث قيم الأوزان والتحيز في التكرار المتتالي لتقليل الخطأ أو الخسارة. هنا ، سأقوم بتدريب مدرك الحس في 100 عصر.

بالنسبة لـ i في النطاق (100): sess.run (train، {x: train_in، y: train_out}) cost = sess.run (loss، feed_dict = {x: train_in، y: train_out}) print ('Epoch-- '، i،' - loss - '، cost)

الخطوة 10: الإخراج

……

……

كما ترى هنا ، بدأت الخسارة عند 2.07 وانتهى عند 0.27

.

التعلم العميق باستخدام Python: إنشاء شبكة عصبية عميقة

الآن وقد نجحنا في إنشاء جهاز استشعار وتدريبه على بوابة OR. دعنا نتابع هذه المقالة ونرى كيف يمكننا إنشاء شبكتنا العصبية الخاصة بنا من سكراتش ، حيث سننشئ طبقة إدخال وطبقات مخفية وطبقة إخراج.

سنستخدم مجموعة بيانات MNIST. تتكون مجموعة بيانات MNIST من 60.000 تدريب عينات و 10000 اختبار عينات من الصور الرقمية المكتوبة بخط اليد. الصور ذات الحجم 28 × 28 بكسل ويمكن أن يقع الإخراج بينهما 0-9 .

المهمة هنا هي تدريب نموذج يمكنه التعرف بدقة على الرقم الموجود في الصورة

أولاً ، سنستخدم الاستيراد أدناه لإحضار وظيفة الطباعة من Python 3 إلى Python 2.6+. يجب أن تكون عبارات __future__ بالقرب من أعلى الملف لأنها تغير أشياء أساسية حول اللغة ، ولذا يحتاج المترجم إلى معرفتها من البداية

من __future__ استيراد print_function

فيما يلي الكود مع التعليقات في كل خطوة

# استيراد بيانات MNIST من tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets ('/ tmp / data /'، one_hot = True) استيراد tensorflow مثل tf import matplotlib.pyplot as plt # Parameters learning_rate = 0.001 training_epochs = 15 batch_size = 100 display_step = 1 # معلمات الشبكة n_hidden_1 = 256 # عدد الطبقة الأولى من الميزات n_hidden_2 = 256 # عدد الطبقة الثانية من الميزات n_input = 784 # إدخال بيانات MNIST (شكل img: 28 * 28) n_classes = 10 # إجمالي فئات MNIST ( 0-9 أرقام) # tf إدخال الرسم البياني x = tf.placeholder ('float'، [None، n_input]) y = tf.placeholder ('float'، [None، n_classes]) # إنشاء نموذج def multilayer_perceptron (x، weights ، التحيزات): # الطبقة المخفية مع تنشيط RELU layer_1 = tf.add (tf.matmul (x، weights ['h1'])، التحيزات ['b1']) layer_1 = tf.nn.relu (layer_1) # الطبقة المخفية مع تنشيط RELU layer_2 = tf.add (tf.matmul (layer_1 ، الأوزان ['h2']) ، التحيزات ['b2']) layer_2 = tf.nn.relu (layer_2) # طبقة الإخراج مع التنشيط الخطي out_layer = tf. matmul (طبقة _2، أوزان ['out']) + التحيزات ['out'] return out_layer # Store layer weight & bias weights = {'h1': tf.Variable ([n_input، n_hidden_1]))، 'h2' : tf.Variable ([n_hidden_1، n_hidden_2]))، 'out': tf.Variable (tf.random_normal ([n_hidden_2، n_classes]))} biases = {'b1': tf.Variable (tf. random_normal ([n_hidden_1]))، 'b2': tf.Variable (tf.random_normal ([n_hidden_2]))، 'out': tf.Variable ([n_classes])}} # بناء النموذج pred = multilayer_perceptron (س ، أوزان ، تحيزات) # تحديد الخسارة وتكلفة المحسن = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = pred ، labels = y)) محسن = tf.train.AdamOptimizer (Learning_rate = Learning_rate). تصغير (التكلفة) # تهيئة المتغيرات init = tf.global_variables_initializer () # إنشاء قائمة فارغة لتخزين سجل التكلفة وسجل الدقة cost_history = [] دقة_history = [] # بدء الرسم البياني باستخدام tf.Session () كـ sess: sess.run (init ) # دورة تدريبية للحقبة في المدى (training_epochs): avg_cost = 0. total_batch = int (mnist.train.num_examples / batch_size) # حلقة على جميع الدُفعات لـ i في النطاق (total_batch): batch_x، batch_y = mnist.train.next_batch (batch_size) # تشغيل عملية التحسين (backprop) والتكلفة op (للحصول على قيمة الخسارة) _، c = sess.run ([المحسن ، التكلفة] ، feed_dict = {x: batch_x، y: batch_y}) # حساب متوسط ​​الخسارة avg_cost + = c / total_batch # عرض السجلات لكل خطوة عصر إذا epoch٪ display_step == 0: true_prediction = tf.equal (tf.argmax (pred، 1)، tf.argmax (y، 1)) # حساب دقة الدقة = tf.reduce_mean (tf.cast (true_prediction، 'float') ) acu_temp = resolution.eval ({x: mnist.test.images، y: mnist.test.labels}) # قم بإرفاق الدقة بالقائمة بدقة_history.append (acu_temp) #append the cost history cost_history.append (avg_cost) print ('Epoch:'، '٪ 04d'٪ (epoch + 1)، '- cost ='، '{: .9f}'. format (avg_cost)، '- Accuracy ='، acu_temp) print ('Optimization Finished! ') # رسم سجل التكلفة plt.plot (cost_history) plt.show () #plot the سجل الدقة plt.plot (دقة _history) plt.show () # نموذج الاختبار true_prediction = tf.equal (tf.argmax (pred، 1)، tf.argmax (y، 1)) # حساب دقة الدقة = tf.reduce_mean (tf.cast (true_prediction، ') float ')) print (' Accuracy: '، resolution.eval ({x: mnist.test.images، y: mnist.test.labels}))

انتاج:

أمثلة برامج جافا الصغيرة مع الإخراج

الآن بهذا ، وصلنا إلى نهاية مقالة التعلم العميق باستخدام Python. آمل أن تكون قد فهمت المكونات المختلفة للتعلم العميق ، وكيف بدأ كل شيء وكيف باستخدام بايثون يمكننا إنشاء إدراك بسيط وشبكة عصبية عميقة.

إديوريكا برعاية متخصصين في الصناعة وفقًا لمتطلبات ومتطلبات الصناعة. سوف تتقن مفاهيم مثل وظيفة SoftMax ، والشبكات العصبية للتشفير التلقائي ، وآلة بولتزمان المقيدة (RBM) وتعمل مع مكتبات مثل Keras & TFLearn. تم تنسيق الدورة بشكل خاص من قبل خبراء الصناعة مع دراسات الحالة في الوقت الفعلي.

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في 'التعلم العميق باستخدام Python' وسنعاود الاتصال بك.