على قطعة من التعليمات البرمجية التي علينا أن keras ظائف القيام مقدمة موجزة، ونحن قادرون على بناء بسرعة شبكة بسيطة التغذية إلى الأمام العصبية، ولكن على الغرض الرئيسي هو للسماح للناس على دراية بشكل أسرع keras الوظائف الأساسية، لن يتم تطبيق نموذج لبيانات محددة، سوف نستخدم هذه المقالة لمعرفة بعض الإحصاءات، وعدد من نماذج الشبكة العصبية والتعلم الإحصائي للقيام المقارنة التقريبية بسيطة.
أولا، البيانات السكري يمكننا استخدام الشبكة العصبية في "overfitting"، فمن البيانات عودة 10 يتضمن ميزات، يمكننا استخدام بسيطة الانحدار الخطي، ريدج الانحدار، لاسو، الانحدار النظرية الافتراضية، SVR، الخ نموذج للتعلم، من الصعب تحديد تأثير هذه الطرق يمكن تحقيق أفضل من ذلك بكثير، لأن استخراج ميزة بالإضافة إلى المعلمات الداخلية للمتعلم، ونحن سوف تواجه مشاكل توافقية كبيرة جدا، هو أكثر تعقيدا مقارنة بدقة مشروع واحد، في نحن فقط جعل المقارنة صعبة هنا، فإننا نشير إلى نتائج وسيلة لا يتجزأ المذكورة في قسم "كيفية تحديد ميزات":
من sklearn.feature_selection RFECV استيراد
سيبورن استيراد كما SNS
matplotlib.pyplot استيراد كما معاهدة قانون البراءات
استيراد نمباي كما أرستها
من sklearn.linear_model انحدار خطي استيراد
من sklearn.model_selection KFold استيراد
البيانات = datasets.load_diabetes ()
X = البيانات
ذ = البيانات
LR = انحدار خطي ()
هداف = 'neg_mean_squared_error "
rfecv = RFECV (مقدر = LR، خطوة = 1، السيرة الذاتية = KFold (5)،
الإحراز = هداف)
rfecv.fit (X، Y)
sns.set ( 'darkgrid' = نمط)
plt.xlabel ( "عدد من الميزات المحددة")
plt.ylabel ( "عبر نقاط التحقق (MSE)")
plt.plot (المدى (1، ليون (rfecv.grid_scores_) + 1)، -rfecv.grid_scores _، "ص"، والتسمية = "العدد الأمثل من الميزات: د" rfecv.n_features_)
plt.legend ()
plt.show ()
كما هو مبين، وطريقة التغليف للمتعلم بسيط الانحدار الخطي، عند إزالة البيانات التكرارية وجدت 6 حيث أفضل وقت، وMSE من 2946.88.
نبني الشبكة العصبية بسيطة تحتوي على طبقتين الخفية للبيانات عودة كذا وطباعته هيكل:
من المهيآت استيراد keras
من keras.models استيراد نموذج
من keras.layers استيراد المدخلات، الكثيفة، تفعيل
آر = initializers.RandomNormal (المتوسط = 0، stddev = 1، وبذور = 42)
المدخلات = الإدخال (الشكل = (10،))
س = الكثيفة (128، kernel_initializer = آكانيوز) (المدخلات)
س = تفعيل ( 'السيني') (خ)
س = الكثيفة (32، kernel_initializer = آكانيوز) (خ)
س = تفعيل ( 'السيني') (خ)
من = الكثيفة (1، kernel_initializer = آكانيوز) (خ)
من = تفعيل ( 'خطي') (الخروج)
نموذج = نموذج (المدخلات = المدخلات والمخرجات = الخروج)
طباعة (model.summary ())
______________________________________________________
طبقة (النوع) الناتج الشكل بارام #
================================================== ====
input_25 (InputLayer) (لا يوجد، 10) 0
______________________________________________________
dense_56 (الكثيفة) (لايوجد، 128) 1408
______________________________________________________
activation_52 (تفعيل) (لايوجد، 128) 0
______________________________________________________
dense_57 (الكثيفة) (لايوجد، 32) 4128
______________________________________________________
activation_53 (تفعيل) (لايوجد، 32) 0
______________________________________________________
dense_58 (الكثيفة) (لايوجد، 1) 33
______________________________________________________
activation_54 (تفعيل) (لايوجد، 1) 0
================================================== ====
مجموع بارامس: 5569
بارامس المدربة: 5569
بارامس غير قابلة للتدريب: 0
______________________________________________________
نتيجة الطباعة، أي ما مجموعه 5569 المعلمات، فإنه ينطوي على عدد من طريقة المعلمات الحساب، وفرضية دراية الشبكة العصبية، يمكننا حساب بسرعة، 10 * 128 + 128 + 128 * 32 + 32 + 32 * 1 + 1 = 5569.
حيث، ونحن نستخدم وظيفة السيني عن وظيفة التنشيط في طبقة خفية، أول طبقة الخلايا العصبية 128، الطبقة الثانية 32 الخلايا العصبية، وعدد من تصميم الخلايا العصبية ولا يوجد سبب خاص. يتم استخدام الخلايا العصبية طبقة الناتج بوصفها وظيفة تنشيط خطي وحدة، في جوهره، لا يتم توظيف وظيفة التنشيط. بعد ذلك، بدأنا في تجميع ونموذج التدريب:
من keras خسائر الاستيراد، أبتيميزر، المقاييس
فقدان = losses.mean_squared_error
الأداء = metrics.mean_squared_error
محسن = optimizers.Adagrad ()
model.compile (الخسارة = خسارة، محسن = محسن، مقاييس = )
له = model.fit (X، Y، batch_size = 128، العهود = 50، مطول = 1، validation_split = 0.3، خلط = صحيح)
نحن نستخدم MSE كما الخسارة ومقاييس الأداء، Adagrad كما خوارزمية الأمثل، في نفس الوقت:
- مجموعة الدفعة إلى 128، 128 تمثل عينات من كل التكرار باستخدام التدرج المحدثة.
- مجموعة validation_split 0.3، ونحن نمثل اقتطعت قبل بدء التدريب كمجموعة التحقق من العينات 0.3.
- العهود مجموعة من 50، ووسائل أنه سيكون لدينا مجموعة البيانات بالكامل 50 تكرارات.
- تعيين مطول إلى 1، مما يدل على تحديث السجل عرض سيظهر:
تدريب على 309 عينات، التحقق من صحة على 133 عينات
عصر 1/5
309/309 - 0S 1MS / خطوة - خسارة: 27615،7395 - mean_squared_error: 27615،7395 - val_loss : 29259.6711 - val_mean_squared_error: 29259.6711
عصر 2/5
309/309 - 0S 38us / خطوة - خسارة: 26909،9610 - mean_squared_error: 26909،9610 - val_loss : 28663.5950 - val_mean_squared_error: 28663.5950
عصر 3/5
309/309 - 0S 30US / خطوة - خسارة: 26295،9708 - mean_squared_error: 26295،9708 - val_loss : 27765.8976 - val_mean_squared_error: 27765.8976
عصر 4/5
309/309 - 0S 35US / خطوة - خسارة: 25396،5153 - mean_squared_error: 25396،5153 - val_loss : 26754.5670 - val_mean_squared_error: 26754.5670
عصر 5/5
309/309 - 0S 42us / خطوة - خسارة: 24493،1804 - mean_squared_error: 24493،1804 - val_loss : 25994.9439 - val_mean_squared_error: 25994.9439
.......
هنا، واعتراض الوحيد من نتائج الخمسة الأولى، وذلك لأن البيانات أقل، كل العهود هي لحظية، ونحن في كثير من الأحيان لا ترى شريط التقدم، ولكن كل خطوة سوف نحصل خسارة على خسارة والمقاييس ومجموعات اختبار على مجموعة التدريب والمقاييس.
وسوف ننقذ كل خطوة من معلوماته إلى المتغير، يمكنك معرفة التغيير الخسارة ومقاييس الأداء لعملية التدريب، في هذه الحالة، لتخفيف ومقاييس الأداء هي نفسها:
سيبورن استيراد كما SNS
matplotlib.pyplot استيراد كما معاهدة قانون البراءات
sns.set ( 'darkgrid' = نمط)
plt.plot (المدى (50)، his.history ، والتسمية = 'val_loss')
plt.plot (المدى (50)، his.history ، والتسمية = 'trian_loss')
plt.title ( 'ANN الخسارة')
plt.legend ()
plt.show ()
كما هو مبين في 50 تكرارات على البيانات الشاملة، ويمكن العثور عليها في التدريب واختبار مجموعات من انخفاض الخسارة بسرعة كبيرة.
ومن الجدير بالذكر هو أنه يمكنك أيضا أن ينظر إليه من هذا الرقم، وهذا الاتجاه لا يبدو التقارب الخسارة، وهو ما يعني فشل التدريب. من ناحية يمكننا اقامة لمراقبة العهود اللاحقة سواء التقارب، ولكن هذا من المرجح أن تكون غير مجدية، لأن المعلمات الشبكة العصبية ليست كثيرة، ليست عميقة، فمن السهل جدا الأمثل، لا تفشل التقارب بسرعة . من ناحية أخرى، وفقا ل "فهم أصل التدرج"، مع العلم أننا بحاجة إلى تغيير أنظمتنا الأمثل، وذلك باستخدام التدرج العشوائية أبسط لإضافة زخم الهبوط، بدلا من الخوارزمية معدل التعلم التكيفي، لأن أوجه القصور من المرجح Adagrad في البدء في تعلم معدل قطرات منخفضة جدا، مما يجعل تحسين بطيء:
....... # بقية تبقى دون تغيير
محسن = optimizers.SGD ()
model.compile (الخسارة = خسارة، محسن = محسن، مقاييس = )
له = model.fit (X، Y، batch_size = 128، العهود = 50، مطول = 1، validation_split = 0.3، خلط = صحيح)
sns.set ( 'darkgrid' = نمط)
plt.plot (المدى (50)، his.history ، والتسمية = 'val_loss')
plt.plot (المدى (50)، his.history ، والتسمية = 'trian_loss')
plt.title ( 'ANN الخسارة')
plt.legend ()
plt.show ()
كما هو مبين، ببساطة إضافة زخم SGD في التكرار 2ND البيانات الشاملة تفعل عندما خفضت وضع الخسارة إلى مستوى منخفض جدا.
عند هذه النقطة، دعونا نلقي مقارنة خاطفة من اثنين، يتم تغليف بسيط MSE الانحدار الخطي في 2946 بموجب القانون في هذه الشبكة العصبية ويتجلى أكثر من 5000، وهي مشكلة خطيرة جدا. قدم الكثير من الحجج الشبكة العصبية، يمكننا أن نتصور بسهولة التي وقعت خلال تركيب (مقارنة مع الانحدار الخطي)، ونحن يمكن أن تتخذ سياسة كثيرة، ولكن هنا من أجل عدم إدخال المزيد من المشاكل، ونحن إزالته يحتوي على 128 العصبية في طبقة خفية لتحقيق هدف خفض حجم الشبكة العصبية:
المدخلات = الإدخال (الشكل = (10،))
س = الكثيفة (32، kernel_initializer = آكانيوز) (المدخلات)
س = تفعيل ( 'السيني') (خ)
من = الكثيفة (1، kernel_initializer = آكانيوز) (خ)
من = تفعيل ( 'خطي') (الخروج)
نموذج = نموذج (المدخلات = المدخلات والمخرجات = الخروج)
وبهذه الطريقة، يمكن للشبكة العصبية تحتوي فقط على طبقة مخفية، ما زلنا وصف الخطوات المذكورة أعلاه يمكن الحصول عليها:
كما هو مبين، ربما في حوالي 30 العهود، وحصلنا على أقرب إلى الانحدار الخطي من MSE.
للبيانات المستخدمة في هذه الورقة، يبدو أن الشبكة العصبية لن تتجاوز نتائج الدراسة الإحصائية يعطي حتى أبسط الانحدار الخطي. في الواقع لم يكن كذلك، من جهة، وإذا كان علينا أن نعدل بعناية المعلمات من الشبكة العصبية ينبغي أن يكون أفضل من بسيطة الانحدار الخطي، ولكن بالنسبة للشبكة العصبية، والتكيف المعلمة هي صعبة للغاية، فقط عدد طبقات وعدد من الخلايا العصبية من الصعب للغاية تحديد أكثر ناهيك عن تغيير نوع وظيفة التنشيط، فإننا الفصل التالي في رمز تظهر آثار مختلفة وظيفة التنشيط على الأداء. من ناحية أخرى، أظهرت دراسة إحصائية دورها الذي لا غنى عنه، فإنه يأخذ أقل من الموارد في العديد من المهام، وقضاء وقت أقل سوف تكون قادرة على الحصول على نتيجة مرضية.
قراءة Xinjunkaiba الفصول الدراسية TIPSفي الرجعة البيانات للقيام سبيل المثال، واحدة من الأسباب بأنني تلقيت سؤال: لماذا لا يعود إلى الشبكة العصبية؟ كنت لا إعادته؟ وأعتقد أن هذه المادة يمكن أن تكون جوابا، وبطبيعة الحال، يمكن للشبكة العصبية تفعل العودة، ولكن الآن معظم فترات المباراة لتحديد المشكلة، وهي مشاكل التصنيف، والشبكات العصبية لا يفهم الناس الذين هم عرضة للانطباعا خاطئا.
هنا أنا استخدم النموذج الخطي وحدة الانتاج، في الواقع، هو الخلايا العصبية المدخلات كمخرج، وسيتم وصف تصميم وحدة الانتاج بالتفصيل في الدروس اللاحقة، والقراء قد نتذكر بسيط الأولى، وحدة الانتاج الانحدار العام وقد اعتمدنا الخطية.
منع الشبكة العصبية overfitting هناك طرق عديدة، مثل التسرب، مشيرا الى تسوية، وتقاسم المعلمة، وسوف نقدم في الدورات اللاحقة هنا اتخذت تدابير للحد من عدد من الطبقات، مثل هذا النهج المستخدمة في الممارسة و ليس كثيرا.
الكاتب: الراهب دون هيد آند شولدرز للطبع، يرجى ترك رسالة وراء الكواليس، والامتثال للمعايير طبع