মনোযোগ ব্যবস্থা ঠিক কি?


23

মনোযোগ ব্যবস্থা গত কয়েক বছরে বিভিন্ন ডিপ লার্নিং পেপারগুলিতে ব্যবহৃত হয়েছে। ওপেন এআইয়ের গবেষণার প্রধান ইলিয়া সুটসেকভার তাদের উত্সাহের সাথে তাদের প্রশংসা করেছেন: https ://towardsdatasজ্ঞ.com/the-fall-of-rnn-lstm-2d1594c74ce0

পারডিউ বিশ্ববিদ্যালয়ের ইউজিনিও কুলুরসিলো দাবি করেছেন যে আরএনএন এবং এলএসটিএমগুলি খাঁটি মনোযোগ-ভিত্তিক নিউরাল নেটওয়ার্কের পক্ষে ছেড়ে দেওয়া উচিত:

https://towardsdatascience.com/the-fall-of-rnn-lstm-2d1594c74ce0

এটি অতিরঞ্জিত বলে মনে হচ্ছে, তবে এটি অনস্বীকার্য যে খাঁটি মনোনিবেশ ভিত্তিক মডেলগুলি সিক্যুয়েন্স মডেলিংয়ের কার্যগুলিতে বেশ ভালভাবে কাজ করেছে: গুগলের কাছ থেকে উপযুক্ত নামযুক্ত কাগজপত্র সম্পর্কে আমরা সবাই জানি, মনোযোগ আপনার প্রয়োজন কেবল

তবে কি ঠিক মনোযোগ ভিত্তিক মডেল কি? আমি এখনও এই জাতীয় মডেলগুলির একটি পরিষ্কার ব্যাখ্যা খুঁজে পাইনি। ধরুন আমি এর বহু timeতিহাসিক মূল্যবোধ বিবেচনা করে বহুবিধ সময় সিরিজের নতুন মানগুলি পূর্বাভাস দিতে চাই। কোনও আরএনএন এলএসটিএম কোষ থাকার মাধ্যমে এটি কীভাবে করা যায় তা বেশ পরিষ্কার। আমি কীভাবে মনোযোগ-ভিত্তিক মডেলটি করব?

উত্তর:


20

মনোযোগ হ'ল একটি ভেক্টর vi এর সেটগুলিকে কেবল একটি ভেক্টরগুলিতে একত্রিত করার জন্য একটি পদ্ধতি , প্রায়শই একটি অনুসন্ধান ভেক্টর u মাধ্যমে । সাধারণত, vi হয় হয় মডেলটির ইনপুট বা পূর্ববর্তী সময়-পদক্ষেপগুলির লুকানো রাজ্য, বা লুকানো এক স্তর নীচে (স্ট্যাকড এলএসটিএমগুলির ক্ষেত্রে) states

ফলাফলের প্রায়ই প্রসঙ্গ ভেক্টর বলা হয় c , যেহেতু এটা রয়েছে প্রসঙ্গ বর্তমান সময়-পদক্ষেপ প্রাসঙ্গিক।

এই অতিরিক্ত প্রসঙ্গ ভেক্টর c তারপর পাশাপাশি RNN / LSTM মধ্যে প্রতিপালিত হয় (এটা শুধু মূল ইনপুট দিয়ে ঘনিভূত করা যেতে পারে)। অতএব, প্রসঙ্গটি ভবিষ্যদ্বাণীতে সহায়তা করতে ব্যবহার করা যেতে পারে।

এই কাজ করতে সহজ উপায় কম্পিউট সম্ভাব্যতা ভেক্টর হয় p=softmax(VTu) এবং c=ipivi যেখানে V সমস্ত পূর্ববর্তী এর সংযুক্তকরণের হয় vi । ভেক্টর একটি সাধারণ লুকআপ u বর্তমান লুকানো রাষ্ট্র hটি

এটিতে অনেকগুলি প্রকরণ রয়েছে এবং আপনি নিজের পছন্দ মতো জিনিসগুলিকে জটিল করে তুলতে পারেন। উদাহরণস্বরূপ, লগইট হিসাবে viTu ব্যবহার করার পরিবর্তে , কেউ f(vi,u) পরিবর্তে, যেখানে f একটি অবাধ নিউরাল নেটওয়ার্ক।

সিকোয়েন্স-টু-সিকোয়েন্স মডেলগুলির জন্য একটি সাধারণ মনোযোগ ব্যবস্থা p=softmax(qTtanh(W1vi+W2ht)) , যেখানে v এনকোডারটির লুকানো রাজ্য, এবং ht বর্তমান লুকানো অবস্থা hidden ডিকোডার এর q এবং উভয় W s পরামিতি।

কিছু কাগজ যা মনোযোগ ধারণার উপর ভিন্ন ভিন্নতা দেখায়:

সংযোজক অপ্টিমাইজেশন সমস্যা সমাধানের জন্য পয়েন্টার নেটওয়ার্কগুলি রেফারেন্স ইনপুটগুলিতে মনোযোগ ব্যবহার করে।

পুনরাবৃত্তি সত্তা নেটওয়ার্কগুলি পাঠ্য পড়ার সময় বিভিন্ন সত্তা (লোক / অবজেক্টস) এর জন্য পৃথক মেমরি স্টেটগুলি বজায় রাখে এবং মনোযোগ ব্যবহার করে সঠিক মেমরি অবস্থার আপডেট করে।

ট্রান্সফর্মার মডেলগুলিও মনোযোগের ব্যাপক ব্যবহার করে। মনোযোগ তাদের তৈয়ার সামান্য বেশি সাধারণ এবং জড়িত মূল ভেক্টর ki : মনোযোগ ওজন p প্রকৃতপক্ষে কী ও লুকআপ মধ্যে নির্ণিত হয়, এবং প্রসঙ্গ তারপর নির্মান করা হয় vi


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

বেসিক আরএনএন:

def rnn(inputs_split):
    bias = tf.get_variable('bias', shape = [hidden_dim, 1])
    weight_hidden = tf.tile(tf.get_variable('hidden', shape = [1, hidden_dim, hidden_dim]), [batch, 1, 1])
    weight_input = tf.tile(tf.get_variable('input', shape = [1, hidden_dim, in_dim]), [batch, 1, 1])

    hidden_states = [tf.zeros((batch, hidden_dim, 1), tf.float32)]
    for i, input in enumerate(inputs_split):
        input = tf.reshape(input, (batch, in_dim, 1))
        last_state = hidden_states[-1]
        hidden = tf.nn.tanh( tf.matmul(weight_input, input) + tf.matmul(weight_hidden, last_state) + bias )
        hidden_states.append(hidden)
    return hidden_states[-1]

মনোযোগ দিয়ে, নতুন লুকানো অবস্থার গণনা করার আগে আমরা কয়েকটি লাইন যুক্ত করেছি:

        if len(hidden_states) > 1:
            logits = tf.transpose(tf.reduce_mean(last_state * hidden_states[:-1], axis = [2, 3]))
            probs = tf.nn.softmax(logits)
            probs = tf.reshape(probs, (batch, -1, 1, 1))
            context = tf.add_n([v * prob for (v, prob) in zip(hidden_states[:-1], tf.unstack(probs, axis = 1))])
        else:
            context = tf.zeros_like(last_state)

        last_state = tf.concat([last_state, context], axis = 1)

        hidden = tf.nn.tanh( tf.matmul(weight_input, input) + tf.matmul(weight_hidden, last_state) + bias )

সম্পূর্ণ কোড


p=softmax(VTu)ic=ipivipiVTvVTv
ডেল্টাভ

1
zi=viTup=softmax(z)pi=eizjejz

ppi

1
হ্যাঁ, আমি যা বোঝাতে চেয়েছিলাম
শিমাও

@ শিমাও আমি একটি আড্ডার ঘর তৈরি করেছি , আপনি যদি কথা বলতে আগ্রহী হন (আমাকে এই প্রশ্ন সম্পর্কে নয়) জানতে দিন
ডেল্টাভিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.