খুব দীর্ঘ প্রশিক্ষণের সময় অ্যাডাম অপ্টিমাইজারের সাথে অদ্ভুত আচরণ


11

আমি rand৪ টি এলোমেলোভাবে উত্পাদিত ডেটা পয়েন্টগুলিতে একটি একক পার্সপেট্রন (1000 ইনপুট ইউনিট, 1 আউটপুট, কোনও আড়াল স্তর নেই) প্রশিক্ষণ দেওয়ার চেষ্টা করছি। আমি অ্যাডাম অপ্টিমাইজার ব্যবহার করে পাইটোর্চ ব্যবহার করছি:

import torch
from torch.autograd import Variable

torch.manual_seed(545345)
N, D_in, D_out = 64, 1000, 1

x = Variable(torch.randn(N, D_in))
y = Variable(torch.randn(N, D_out))

model = torch.nn.Linear(D_in, D_out)
loss_fn = torch.nn.MSELoss(size_average=False)

optimizer = torch.optim.Adam(model.parameters())
for t in xrange(5000):
  y_pred = model(x)
  loss = loss_fn(y_pred, y)

  print(t, loss.data[0])

  optimizer.zero_grad()
  loss.backward()
  optimizer.step()

প্রাথমিকভাবে, ক্ষতিটি দ্রুত হ্রাস পায়, যেমনটি প্রত্যাশিত:

(0, 91.74887084960938)
(1, 76.85824584960938)
(2, 63.434078216552734)
(3, 51.46927261352539)
(4, 40.942893981933594)
(5, 31.819372177124023)

প্রায় 300 টি পুনরাবৃত্তি, ত্রুটি শূন্যের কাছাকাছি পৌঁছেছে:

(300, 2.1734419819452455e-12)
(301, 1.90354676465887e-12)
(302, 2.3347573874232808e-12)

এটি কয়েক হাজার পুনরাবৃত্তির জন্য চলে। তবে, দীর্ঘ সময় প্রশিক্ষণের পরেও ত্রুটিটি আবার বাড়তে শুরু করে:

(4997, 0.002102422062307596)
(4998, 0.0020302983466535807)
(4999, 0.0017039275262504816)

ইহা কি জন্য ঘটিতেছে?


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

মডেলটির 1000 পরামিতি রয়েছে এবং সেখানে কেবল 1 টি ডেটা পয়েন্ট রয়েছে, সুতরাং মডেলটির ডেটাটি ঠিক ফিট করা উচিত এবং ক্ষতিটি শূন্য হওয়া উচিত।
বাই লি

ওহ দুঃখিত, আপনি ঠিক বলেছেন। 64 তথ্য পয়েন্ট আছে।
বাই লি

এখানে data৪ টি ডাটা পয়েন্ট রয়েছে (যেমন, সীমাবদ্ধতা) এবং 1000 প্যারামিটার, সুতরাং পরামিতিগুলির জন্য পছন্দগুলি খুঁজে পাওয়া সম্ভব হবে যাতে ত্রুটি শূন্য হয় (এবং এটি বিশ্লেষণাত্মকভাবে করা সহজ)। আমার প্রশ্ন হ'ল আদম কেন এটি খুঁজে পায় না।
বাই লি

উত্তর:


19

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

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

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

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

আপনি বিভিন্ন অপটিমাইজারের তুলনায় আসলে আরএমএসপ্রপের জন্য এটি দেখতে পাচ্ছেন (আরএমএসপ্রপ ব্ল্যাক লাইন - লক্ষ্যটিতে পৌঁছানোর সাথে সাথে খুব শেষ পদক্ষেপগুলি দেখুন):

এখানে চিত্র বর্ণনা লিখুন

আপনি অ্যাডামকে আরও স্থিতিশীল এবং শিক্ষার হারকে হ্রাস করে সত্যের সংযোগের নিকটে যেতে সক্ষম করতে পারেন। যেমন

optimizer = torch.optim.Adam(model.parameters(), lr=1e-5)

এটি অনুকূলিতকরণে আরও বেশি সময় নিবে। ব্যবহার lr=1e-5আপনি 20,000+ পুনরাবৃত্তিও জন্য প্রশিক্ষণের আগে আপনি অস্থিরতা দেখতে প্রয়োজন এবং অস্থিরতা কম নাটকীয় হয়, মান প্রায় কার্সার রেখে10-7


এটি একটি দর্শনীয় দৃশ্য, নীল। আসল মাত্রা কি? এক্স এবং ওয়াই কি প্রতিনিধিত্ব করছে? ফ্রেমগুলি কি ফ্রেমে প্রতি কিছু ব-দ্বীপ টি বা এন এপচস হয়? আমি অনুমান করছি যে দুটি নির্বাচিত প্যারামিটারের ক্ষেত্রে বৈষম্য (ত্রুটি) এর টোগোগ্রাফিক উপস্থাপনায় তারকাটি হ'ল বৈশ্বিক অনুকূল। আমার অনুমান সঠিক?
ডগলাস ড্যাসেকো

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

1

অন্যান্য গ্রেড গ্রেডিয়েন্টের আশেপাশে এই সমস্যাটি এড়াতে আরও ছোট শিক্ষার হার ব্যবহার করার দুর্দান্ত পরামর্শ সহ কারণটির ঠিক উত্তর হিসাবে উল্লেখ করা হয়েছে।

আমি কয়েকটি পদ্ধতির কথা ভাবতে পারি:

  1. আপনি উপরের / নিম্ন সীমানা দিয়ে গ্রেডিয়েন্টগুলি ক্লিপ করতে পারেন তবে এটি রূপান্তরটির গ্যারান্টি দেয় না এবং কিছু স্থানীয় মিনিমাতে আটকা পড়ে প্রশিক্ষণ হিমশীতল হতে পারে এবং এর থেকে কখনই বেরিয়ে যায় না।

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

আমি নিশ্চিত যে অন্যান্য পদ্ধতি আছে (যেমন চক্রীয় শিক্ষার হার ইত্যাদি) যা পরিসংখ্যানের ভিত্তিতে একটি অনুকূল শিক্ষার হার সন্ধান করার চেষ্টা করে।

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