কনভোলিউশনাল নিউরাল নেটওয়ার্ক ওভারফিটিং। ড্রপআউট সাহায্য করছে না


16

আমি বন্দীদের সাথে একটু খেলছি। বিশেষত, আমি ক্যাগল বিড়াল-বনাম-কুকুর ডেটাসেট ব্যবহার করছি যা 25000 চিত্রের উপর বিভক্ত বা কুকুর (প্রতিটি 12500) হিসাবে লেবেলযুক্ত।

আমি আমার পরীক্ষার সেটটিতে প্রায় 85% শ্রেণিবদ্ধতা নির্ভুলতা অর্জন করতে সক্ষম হয়েছি, তবে আমি 90% নির্ভুলতা অর্জনের লক্ষ্য স্থির করেছি।

আমার মূল সমস্যাটি হ'ল ফিট। একরকম এটি সর্বদা শেষ হয়ে যায় (সাধারণত 8-10 এর আগে)। আমার নেটওয়ার্কের আর্কিটেকচারটি VGG-16 দ্বারা আলগাভাবে অনুপ্রাণিত হয়েছে, আরও সুনির্দিষ্টভাবে আমার চিত্রগুলি 128x128x3 পুনরায় আকার দেওয়া হয়েছে এবং তারপরে আমি চালিয়ে যাচ্ছি:

Convolution 1 128x128x32 (kernel size is 3, strides is 1)
Convolution 2 128x128x32 (kernel size is 3, strides is 1)
Max pool    1 64x64x32   (kernel size is 2, strides is 2)
Convolution 3 64x64x64   (kernel size is 3, strides is 1)
Convolution 4 64x64x64   (kernel size is 3, strides is 1)
Max pool    2 32x32x64   (kernel size is 2, strides is 2)
Convolution 5 16x16x128  (kernel size is 3, strides is 1)
Convolution 6 16x16x128  (kernel size is 3, strides is 1)
Max pool    3 8x8x128    (kernel size is 2, strides is 2)
Convolution 7 8x8x256    (kernel size is 3, strides is 1)
Max pool    4 4x4x256    (kernel size is 2, strides is 2)
Convolution 8 4x4x512    (kernel size is 3, strides is 1)
Fully connected layer 1024 (dropout 0.5)
Fully connected layer 1024 (dropout 0.5)

শেষটি ব্যতীত অন্যান্য সমস্ত স্তরের অ্যাক্টিভেশন ফাংশন হিসাবে পুনরায় স্থান রয়েছে।

নোট করুন যে আমি কনভোলশনের বিভিন্ন সংমিশ্রণ চেষ্টা করেছি (আমি সহজ কনভোলিউশন দিয়ে শুরু করেছি)।

এছাড়াও আমি চিত্রগুলি মিরর করে ডেটাসেটটি বাড়িয়েছি যাতে মোট আমার 50000 টি চিত্র থাকে।

এছাড়াও, আমি সর্বনিম্ন সর্বাধিক নরমালাইজেশন ব্যবহার করে চিত্রগুলি স্বাভাবিক করছি, যেখানে এক্স চিত্র

X=X0/2550

কোডটি টেনসরফ্লোতে লেখা এবং ব্যাচের আকার 128।

প্রশিক্ষণের উপাত্তের মিনি ব্যাচগুলি সর্বোপরি 100% যথার্থতা অর্জন করে এবং বৈধতা ডেটা প্রায় 84-85% এ শিখতে বন্ধ করে দেয় বলে মনে হয়।

আমি ড্রপআউট হার বাড়াতে / হ্রাস করার চেষ্টাও করেছি।

অপটিমাইজারটি ব্যবহৃত হচ্ছে হ'ল 0.0001 শিখার হার সহ অ্যাডামঅ্যাপটিমাইজার

এই মুহূর্তে আমি এই সমস্যাটি নিয়ে গত 3 সপ্তাহ ধরে খেলছি এবং 85% আমার সামনে বাধা তৈরি করেছে বলে মনে হচ্ছে।

রেকর্ডের জন্য, আমি জানি যে আমি আরও উচ্চতর ফলাফল অর্জন করতে ট্রান্সফার লার্নিং ব্যবহার করতে পারি, তবে আমি একটি স্ব-শিক্ষার অভিজ্ঞতা হিসাবে এই নেটওয়ার্কটি তৈরিতে আগ্রহী।

হালনাগাদ:

আমি ভিন্ন ব্যাচের আকারের সাথে একই নেটওয়ার্ক চালাচ্ছি, এক্ষেত্রে আমি অনেক ছোট ব্যাচের আকার (128 এর পরিবর্তে ১ 16) ব্যবহার করছি এখন পর্যন্ত আমি ৮.5.৫% নির্ভুলতা অর্জন করছি (85% এর পরিবর্তে)) বলেছিল যে, যাইহোক নেটওয়ার্কটি সর্বোপরি শেষ হয়। তবুও আমি বুঝতে পারি না যে 50% ইউনিটের একটি ড্রপআউট কীভাবে সহায়তা করছে না ... স্পষ্টতই আমি এখানে কিছু ভুল করছি। কোন ধারনা?

আপডেট 2:

মনে হচ্ছে সমস্যাটি ব্যাচের আকারের মতো ছিল যেমন ছোট আকারের (128 এর পরিবর্তে 16) আমি এখনই আমার পরীক্ষার সেটটিতে 92.8% যথার্থতা অর্জন করছি, ছোট ব্যাচের আকারের সাথে নেটওয়ার্কটি এখনও অধিক পরিমাণে ছাপিয়ে গেছে (মিনি ব্যাচগুলি শেষ হয়েছে) 100% এর নির্ভুলতার সাথে) তবে লোকসান (ত্রুটি) কমতে থাকে এবং এটি সাধারণভাবে আরও স্থিতিশীল থাকে। কনসটি অনেক ধীর চলমান সময়, তবে এটি সম্পূর্ণ অপেক্ষা করার মতো।


2
ওভার-ফিটিংয়ের মূল্যায়ন সম্পর্কে আপনি আরও বিশদ দিতে পারেন? উদাহরণস্বরূপ, প্রশিক্ষণ এবং বৈধতা ফলাফল থেকে বৈচিত্র্যের পাশাপাশি বৈধতা নির্ভুলতা কি কোনও পর্যায়ে নেমে আসে? ক্ষতির কাজটি কেমন?
নিল স্লেটার

উত্তম প্রশ্ন, সুতরাং অতিরিক্ত দক্ষতার দ্বারা আমি বোঝাতে চাইছি যে ট্রেনের মিনি-ব্যাচগুলি 100% যথাযথতা অর্জন করে এবং 0.08 এর ক্ষয়ক্ষতি অর্জন করে যখন বৈধতা কখনও 0.35 এর নিচে চলে যায় বলে মনে হয় না এবং এর যথার্থতা এখন 88% এ রয়ে গেছে। বৈধতা অনুসারে এটি নেমে যাচ্ছে বলে মনে হচ্ছে না (কমপক্ষে খুব বেশি নয়), সমতল হয়ে উঠেছে বলে মনে হচ্ছে, তবে বৈধতা এখনও এর থেকে দূরে থাকা অবস্থায় মিনি ব্যাচ এত কম ক্ষতি কীভাবে অর্জন করবে?
হুয়ান আন্তোনিও গোমেজ মরিয়ানো

আমি আপনার জন্য একটি উত্তর জানি না, তবে এই আচরণ - ট্রেন এবং বৈধকরণের মধ্যে বৃহত্তর বিভেদ, তবে এখনও ঠিক-ইশ মালভূমি বৈধতা - এমন কিছু জিনিস যা আমি কয়েকবার আগে দেখেছি। আমি একে ওভার-ফিটিং বলতে প্রায় দ্বিধা বোধ করি কারণ কখনও কখনও পরীক্ষার ফলাফল গ্রহণযোগ্য হয়।
নিল স্লেটার

"তবুও আমি বুঝতে পারি না যে ৫০% ইউনিট ড্রপআউট কীভাবে সহায়তা করছে না" আমি সাফল্যের সাথে লোকদের ড্রপআউটের অনেক উচ্চতর মান ব্যবহার করতে দেখেছি।
রিকার্ডো ক্রুজ

উত্তর:


14

ঠিক আছে, তাই অনেক পরীক্ষার পরে আমি কিছু ফলাফল / অন্তর্দৃষ্টি পেতে পরিচালিত করেছি।

প্রথম স্থানে, সমস্ত কিছু সমান হওয়ায়, প্রশিক্ষণ সংস্থায় ছোট ছোট ব্যাচগুলি নেটওয়ার্কের সাধারণ পারফরম্যান্স বাড়ানোর জন্য অনেকটা সহায়তা করে , নেতিবাচক দিক হিসাবে, প্রশিক্ষণ প্রক্রিয়াটি ধীরে ধীরে ধীরে ধীরে হয়।

দ্বিতীয় বিষয়, ডেটা গুরুত্বপূর্ণ, এখানে নতুন কিছুই নয় তবে আমি এই সমস্যার বিরুদ্ধে লড়াইয়ের সময় যেমন শিখেছি, আরও ডেটা সবসময় কিছুটা সহায়তা করে বলে মনে হয়।

তৃতীয় পয়েন্ট, প্রচুর ডেটা এবং প্রচুর পুনরাবৃত্তি সহ বৃহৎ নেটওয়ার্কগুলিতে ড্রপআউট কার্যকর, আমার নেটওয়ার্কে আমি কেবলমাত্র চূড়ান্তভাবে সংযুক্ত স্তরগুলিতে ড্রপআউট প্রয়োগ করি, কনভলশন স্তরগুলি ড্রপআউট প্রয়োগ হয় নি।

চতুর্থ দফা (এবং এই আমি উপর শিখছি এবং শেষ): নিউরাল networds ট্রেন অনেক নেওয়া, এমনকি ভাল জিপিইউ মধ্যে (আমি floydhub এই নেটওয়ার্ক, যা বেশ ব্যয়বহুল Nvidia কার্ডগুলির ব্যবহার প্রশিক্ষিত), তাই ধৈর্য চাবিকাঠি

চূড়ান্ত উপসংহার: ব্যাচের আকারগুলি আরও গুরুত্বপূর্ণ যেগুলি মনে করতে পারে, ব্যাচগুলি বড় হলে স্থানীয় নূন্যতমকে আঘাত করা সহজ apparent

আমি যে কোডটি লিখেছি তা পাইথন নোটবুক হিসাবে উপলব্ধ, আমি মনে করি এটি শালীনভাবে নথিভুক্ত

https://github.com/moriano/loco-learning/blob/master/cats-vs-dogs/cats-vs-dogs.ipynb


আপনার অনুসন্ধান পোস্ট করার জন্য ধন্যবাদ। কুইক প্রশ্ন: আমি একটি অনুরূপ সমস্যা সম্মুখীন করছি এবং আমার নোটবুক আপনি পোস্ট এ এই দেখেছি: NOTE USE EITHER mean centering or min-max, NOT BOTH। আমি বর্তমানে আমার ইনপুট চিত্রগুলি আমার input_fn(টেনসরফ্লো এস্টিমেটার এপিআই) ভিতরে 255 দিয়ে বিভক্ত করছি । তারপরে, মডেলের ভিতরে, আমি ব্যাচ নর্মের মাধ্যমে সেই ইনপুটটি চালাচ্ছি। আমার এখনও কি কেবলমাত্র সেই সাধারণকরণগুলির মধ্যে একটি করা উচিত? Github.com/forigone/tf-imagenet/blob/master/models/…
-

আমার বোধগম্য যে 255 দ্বারা বিভাজক প্রতিটি চিত্রের মধ্যে একবার একবার করা হয় এবং কারণটি হল 0 এবং 1 এর মধ্যে সমস্ত মানগুলি সংখ্যার স্থায়িত্ব সরবরাহ করবে।
হুয়ান আন্তোনিও গোমেজ মরিয়ানো

অবশ্যই, আমি এটি পেয়েছি। তবে আপনি কি মনে করেন যে ব্যাচটি [0, 1] এর মধ্যে এই মানগুলিকে স্বাভাবিক করতে পারে?
রডরিগো-সিলভির

এটি, আমি জানি না, আমি ব্যাচের সাধারণীকরণটি ব্যবহার করার পরে অনেক সময় হয়েছে :)
জুয়ান আন্তোনিও গোমেজ মরিয়ানো

3

নীল স্লেটারের পরামর্শ অনুসারে আপনার বৈধতার যথাযথতার শেখার প্লটগুলি বিশ্লেষণ করার পরামর্শ দিচ্ছি। তারপরে, যদি বৈধতার যথাযথতা ড্রপগুলি আপনার নেটওয়ার্কের আকার হ্রাস করার চেষ্টা করে (খুব গভীর মনে হয়), প্রতিটি স্তরের পরে সিএনভি স্তরগুলিতে ড্রপআউট এবং ব্যাচনরমালাইজেশন যুক্ত করুন। এটি ওভারফিটিং থেকে মুক্তি পেতে এবং পরীক্ষার নির্ভুলতা বাড়াতে সহায়তা করতে পারে।


পরামর্শের জন্য ধন্যবাদ, চেষ্টা করে দেখুন, তবে আমি এই ধারণার মধ্যে ছিলাম যে সিএনভি স্তরগুলি ড্রপআউটের প্রয়োজন হয় না, বেশিরভাগ কাগজ পড়েছি, ড্রপআউটটি সর্বদা সম্পূর্ণরূপে সংযুক্ত স্তরগুলিতে প্রয়োগ করা হয়, কনভোলটিনগুলিতে নয়।
জুয়ান আন্তোনিও গোমেজ মরিয়ানো

3

আপনার সমস্যার জন্য বেশ কয়েকটি সম্ভাব্য সমাধান রয়েছে।

  1. পূর্ববর্তী স্তরগুলিতে ড্রপআউট (কনভ্যুশনাল স্তর) ব্যবহার করুন too

  2. আপনার নেটওয়ার্কটি এ জাতীয় "সহজ" কাজের জন্য একরকম বেশ বড় বলে মনে হচ্ছে; এটি হ্রাস করার চেষ্টা করুন। বড় স্থাপত্যগুলি আরও অনেক বড় ডেটাসেটগুলিতে প্রশিক্ষিত হয়।

আপনি যদি নিজের "বড়" আর্কিটেকচারটি চেষ্টা করে রাখতে চান তবে:

  1. আপনার প্রশিক্ষণের ডেটা কার্যত বাড়ানোর জন্য চিত্রের বর্ধন

  2. প্রতিকূল প্রশিক্ষণ চেষ্টা করুন। এটি কখনও কখনও সাহায্য করে।


"আপনার নেটওয়ার্কটি এ জাতীয়" সহজ "কাজের জন্য একরকম বেশ বড় বলে মনে হচ্ছে; এটি হ্রাস করার চেষ্টা করুন big বড় আর্কিটেকচারগুলি আরও অনেক বড় ডেটাসেটগুলিতে প্রশিক্ষিত।" আমি দ্বিমত পোষণ করছি, আমি আরও সংশ্লেষ যুক্ত করার সাথে সাথে নির্ভুলতা বৃদ্ধি পেয়েছে (প্রাথমিকভাবে আমি মাত্র দুটি কনভলিউশন দিয়ে 68% অর্জন করছি)। এছাড়াও, আমি ইতিমধ্যে আমার ডেটাসেটটি বাড়িয়ে দিচ্ছি, আমি 50000 চিত্র সহ পরিচালনা করি।
জুয়ান আন্তোনিও গোমেজ মরিয়ানো

2

একটি জিনিস যা এখনও উল্লেখ করা হয়নি এবং আপনি ভবিষ্যতের জন্য বিবেচনা করতে পারেন: আপনি এখনও সম্পূর্ণ সংযুক্ত স্তরগুলিতে আপনার ড্রপআউট বাড়াতে পারেন।

আমি একবারে একটি কাগজ পড়েছিলাম যা 90% ড্রপআউট হার ব্যবহার করে। যদিও এর অনেকগুলি নোড ছিল (২০৪৮ যদি আমি সঠিকভাবে স্মরণ করি) তবে আমি নিজেও কম নোডের সাথে স্তরগুলিতে চেষ্টা করেছি এবং এটি কিছু ক্ষেত্রে এটি খুব সহায়ক ছিল।

আমি খালি তাকিয়েছিলাম এটি কোন কাগজ ছিল। আমি কোন কাগজটি স্রেফ স্মরণ করেছি তা মনে করতে পারছি না তবে আমি এটি পেয়েছি যে 90% ড্রপআউট হারের সাথে কিছুটা সাফল্যও পেয়েছিল।

কার্পথি, এ।, টোডেরিসি, জি।, শেঠি, এস, লেইং, টি। কনভোলশনাল নিউরাল নেটওয়ার্কগুলির সাথে বড় আকারের ভিডিও শ্রেণিবিন্যাস। কম্পিউটার ভিশন এবং প্যাটার্ন স্বীকৃতি সম্পর্কিত আইইইই সম্মেলনের কার্যক্রমের (পিপি। 1725-1732) Pro

সিমোনিয়ান, কে।, এবং জিসারম্যান, এ। (2014)। ভিডিওগুলিতে ক্রিয়াকলাপের স্বীকৃতির জন্য দ্বি-স্ট্রিম কনভোলিউশনাল নেটওয়ার্ক। নিউরাল ইনফরমেশন প্রসেসিং সিস্টেমের অগ্রগতিগুলিতে (পিপি 568-576)।

ভারোল, জি।, ল্যাপটভ, আই।, এবং শ্মিড, সি (2017)। কর্ম স্বীকৃতির জন্য দীর্ঘমেয়াদী অস্থায়ী কনভোলিউশন। প্যাটার্ন বিশ্লেষণ এবং মেশিনের বুদ্ধি সম্পর্কিত আইইইই লেনদেন।


0

আমারও এই সমস্যা ছিল কয়েক ঘন্টা ধরে এটির সাথে ডুব দেওয়ার পরে, সুযোগে আমি সিদ্ধান্ত নিয়েছিলাম যে এটি ডেটা সিস্টেমে এবং ভয়েলায় খাওয়ানোর আগে তা বদলাতে হবে, এটি কাজ শুরু করে। আমাকে ভাবতে কিছুটা সময় লাগল যে এলোমেলো ঘটনাটি চালাকি করেছিল! আশা করি এটি হতাশা থেকে কাউকে বাঁচায়!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.