রেসনেট এড়িয়ে যান সংযোগের মাধ্যমে গ্রেডিয়েন্ট ব্যাকপ্রসারণ


22

আমি উত্সাহিত করছি কিভাবে রেসনেট মডিউলগুলি / এড়িয়ে যাওয়া সংযোগগুলি ব্যবহার করে নিউরাল নেটওয়ার্কের মাধ্যমে গ্রেডিয়েন্টগুলি ফেরত প্রচারিত হয় are আমি রেসনেট (যেমন স্কিপ-লেয়ার সংযোগ সহ নিউরাল নেটওয়ার্ক ) সম্পর্কে বেশ কয়েকটি প্রশ্ন দেখেছি তবে এটি প্রশিক্ষণের সময় গ্রেডিয়েন্টগুলির ব্যাক-প্রসারণ সম্পর্কে বিশেষত জিজ্ঞাসা করছে।

প্রাথমিক স্থাপত্য এখানে:

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

আমি এই কাগজটি পড়েছি, চিত্র স্বীকৃতির জন্য রেসিডুয়াল নেটওয়ার্কগুলির স্টাডি , এবং বিভাগ 2 এ তারা কীভাবে রেজনেটের লক্ষ্যগুলির মধ্যে একটি হ'ল গ্রেডিয়েন্টের জন্য বেস স্তরটিতে ব্যাক-প্রসারণ করার জন্য একটি সংক্ষিপ্ত / ক্লিয়ারার পথকে মঞ্জুরি দেওয়া।

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

তদুপরি, আমি বুঝতে পারি যে গ্রেডিয়েন্ট যদি ওজন স্তরগুলির মধ্য দিয়ে প্রবাহের প্রয়োজন না হয় তবে কীভাবে অদৃশ্য গ্রেডিয়েন্ট সমস্যা হ্রাস পাবে, তবে যদি ওজনগুলির মধ্য দিয়ে কোনও গ্রেডিয়েন্ট প্রবাহ না থাকে তবে তারা পিছিয়ে যাওয়ার পরে কীভাবে আপডেট হবে?


কেবল একটি বোকামি প্রশ্ন, কেন আমরা এক্সকে স্কিপ সংযোগ হিসাবে পাস করি এবং শেষের দিকে এক্স পাওয়ার জন্য বিপরীতমুখী (F (x)) গণনা করি না? এটি গণনা জটিলতার কারণ?
যশ কুমার আত্রি

আমি আপনার কথা পেলাম না the gradient doesn't need to flow through the weight layers, আপনি কি তা ব্যাখ্যা করতে পারেন?
আনু

উত্তর:


13

অ্যাড উভয় ইনপুট সমানভাবে গ্রেডিয়েন্ট প্রেরণ করে। নিম্নলিখিত টেনসরফ্লোতে চালিয়ে আপনি নিজেকে এটাকে বোঝাতে পারেন:

import tensorflow as tf

graph = tf.Graph()
with graph.as_default():
    x1_tf = tf.Variable(1.5, name='x1')
    x2_tf = tf.Variable(3.5, name='x2')
    out_tf = x1_tf + x2_tf

    grads_tf = tf.gradients(ys=[out_tf], xs=[x1_tf, x2_tf])
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        fd = {
            out_tf: 10.0
        }
        print(sess.run(grads_tf, feed_dict=fd))

আউটপুট:

[1.0, 1.0]

সুতরাং, গ্রেডিয়েন্টটি হ'ল:

  • স্কিপ-লেয়ার সংযোগের মাধ্যমে এবং অপরিবর্তিত আগের স্তরগুলিতে ফিরে গেছে
  • ওজন সহ ব্লকে চলে গেছে এবং সেই ওজনগুলি আপডেট করতে ব্যবহৃত হয়েছিল

সম্পাদনা: একটি প্রশ্ন রয়েছে: "চিত্র 2 এর নীচে হাইওয়ে সংযোগ এবং নিউরাল নেট ব্লক আবার একসাথে যোগদানের বিন্দুতে কী কাজ করবে?"

উত্তর আছে: তাদের সংক্ষিপ্ত করা হয়। চিত্র 2 এর সূত্র থেকে আপনি এটি দেখতে পারেন:

outputF(x)+x

এটি যা বলে তা হ'ল:

  • বাসের মানগুলি ( )x
  • নেটওয়ার্কের মাধ্যমে values , বাসের মানগুলি পাস করার ফলাফলগুলিতে যুক্ত করা হয় , অর্থাৎএফ ( এক্স )xF(x)
  • অবশেষ ব্লক থেকে আউটপুট দিতে, যা আমি এখানে as as হিসাবে লেবেল করেছিoutput

সম্পাদনা 2:

কিছুটা ভিন্ন কথায় আবার লেখা:

  • ফরোয়ার্ড দিকের দিকে, ইনপুট ডেটা বাসের নীচে প্রবাহিত হয়
    • বাসের পাশের পয়েন্টগুলিতে, অবশিষ্ট অবরুদ্ধ ব্লকগুলি বাস ভেক্টরে মান যোগ করতে / অপসারণ করতে শিখতে পারে
  • পিছনের দিকে, গ্রেডিয়েন্টগুলি বাসের পিছনে ফিরে প্রবাহিত হয়
    • পথ ধরে, গ্রেডিয়েন্টগুলি পূর্ববর্তী স্থানান্তরিত অবশেষ ব্লকগুলি আপডেট করে
    • অবশিষ্টগুলি ব্লকগুলি নিজেরাই গ্রেডিয়েন্টগুলি সামান্য পরিবর্তন করবে

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

3 সম্পাদনা করুন: ব্যক্তিগতভাবে আমি নিম্নলিখিত চিত্র হিসাবে আমার মাথার মধ্যে একটি রজনেট কল্পনা করি। এর টপোলজিকভাবে 2 চিত্রের মতো অভিন্ন, তবে এটি আরও স্পষ্টভাবে দেখায় যে বাসটি সরাসরি নেটওয়ার্কের মধ্য দিয়ে কীভাবে প্রবাহিত হবে, যখন অবশিষ্ট অবরুদ্ধ ব্লকগুলি কেবল সেখান থেকে মানগুলি ট্যাপ করে এবং বাসের বিপরীতে কিছু ছোট ভেক্টর যুক্ত / সরিয়ে দেয়:

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


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

3
আমি দেখি. সুতরাং এক গ্রেডিয়েন্ট সোজা x এ পিছনে পিছনে চলেছে, অন্যটি ওজন মাধ্যমে এক্স-এ ফিরে যায়। x টি 2 টি পথে বিভক্ত হয়ে যাওয়ার কারণে যখন তারা এক্স পৌঁছায় তখন কি তাদের সংক্ষিপ্তসার পাওয়া যায়? যদি তাই হয়, এই স্তরগুলির মধ্য দিয়ে পিছনে সরে যাওয়ার সাথে গ্রেডিয়েন্টটি এখনও পরিবর্তন হচ্ছে না?
সাইমন

1
গ্রেডিয়েন্টগুলি সমস্ত স্ট্যাকের নিচে অপরিবর্তিত প্রবাহিত হয়। যাইহোক, প্রতিটি ব্লক তার ওজন আপডেট আপডেট করে এবং তার নিজস্ব গ্রেডিয়েন্টের সেট তৈরি করার পরে, স্ট্যাকের মধ্যে নিজস্ব গ্রেডিয়েন্ট পরিবর্তনগুলি অবদান করে। প্রতিটি ব্লকের ইনপুট এবং আউটপুট উভয়ই থাকে এবং গ্রেডিয়েন্টগুলি ইনপুট থেকে প্রবাহিত হয়ে গ্রেডিয়েন্ট "হাইওয়ে" তে ফিরে আসবে।
হিউ পারকিনস

1
@ রোনাকআগ্রাওয়াল চিত্র 2 থেকে যোগ অপটোরোইন দেখিয়ে একটি সম্পাদনা যুক্ত করেছেন এবং ব্যাখ্যা করছেন
হিউ পার্কিনস

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