টাইম সিরিজ মডেল এলএসটিএম-এ বৈশিষ্ট্য যুক্ত করা হচ্ছে


42

সময় সিরিজের জন্য এলএসটিএম এর ব্যবহার এবং তাদের ব্যবহার সম্পর্কে কিছুটা পড়ছি এবং এটি একই সময়ে আকর্ষণীয় তবে কঠিন ছিল। আমার বুঝতে সমস্যা হয়েছে এমন একটি বিষয় হ'ল ইতিমধ্যে টাইম সিরিজের বৈশিষ্ট্যগুলির তালিকায় থাকা অতিরিক্ত বৈশিষ্ট্যগুলি যুক্ত করার পদ্ধতি। ধরে নিচ্ছি আপনার নিজের ডেটাসেটটি এভাবে রয়েছে:

টি-3, টি-2, টি-1, আউটপুট

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


আমি আপনার প্রশ্ন পছন্দ করি। তবে, কী আপনি এই বিষয়বস্তু জ্ঞানের উপর ভিত্তি করে এই নন-টাইম সিরিজ বৈশিষ্ট্যটি সময় আউটপুটকে প্রভাবিত করতে পারেন তা ব্যাখ্যা করতে পারেন।
horaceT

উত্তর:


39

RNNs (যেমন, LSTMs এবং GRUs) এর জন্য, স্তর ইনপুট হয় timesteps একটি তালিকা, এবং প্রতিটি timestep হয় একটি বৈশিষ্ট্য টেন্সর। এর অর্থ হ'ল আপনার কাছে এর মতো একটি ইনপুট টেনসর থাকতে পারে (পাইথোনিক স্বরলিপিতে):

# Input tensor to RNN
[
    # Timestep 1
    [ temperature_in_paris, value_of_nasdaq, unemployment_rate ],
    # Timestep 2
    [ temperature_in_paris, value_of_nasdaq, unemployment_rate ],
    # Timestep 3
    [ temperature_in_paris, value_of_nasdaq, unemployment_rate ],
    ...
]

সুতরাং একেবারে, প্রতিটি টাইমস্টেপে আপনার একাধিক বৈশিষ্ট্য থাকতে পারে। আমার মনে, আবহাওয়া একটি সময় সিরিজের বৈশিষ্ট্য: যেখানে আমি থাকি, এটি সময়ের ফাংশন বলে মনে হয়। সুতরাং প্রতিটি টাইমস্টেপে আপনার বৈশিষ্ট্যগুলির মধ্যে একটি হিসাবে আবহাওয়ার তথ্যকে এনকোড করা বেশ যুক্তিসঙ্গত হবে (উপযুক্ত এনকোডিং সহ মেঘলা = 0, রৌদ্র = 1 ইত্যাদি)।

আপনার যদি অ-সময়-সিরিজ ডেটা থাকে, তবে এটি LSTM এর মাধ্যমে পাস করার সত্যিকার অর্থে তা বোঝা যায় না। সম্ভবত এলএসটিএম যাইহোক কাজ করবে, তবে এটি যদি না হয় তবে এটি প্রশিক্ষণের সময় প্রতি উচ্চতর ক্ষতি / কম নির্ভুলতার জন্য ব্যয় করতে পারে।

বিকল্পভাবে, আপনি অতিরিক্ত স্তরগুলির মাধ্যমে LSTM এর বাইরে আপনার মডেলটিতে এই ধরণের "অতিরিক্ত" তথ্য প্রবর্তন করতে পারেন। আপনার এই জাতীয় ডেটা প্রবাহ থাকতে পারে:

TIME_SERIES_INPUT ------> LSTM -------\
                                       *---> MERGE ---> [more processing]
AUXILIARY_INPUTS --> [do something] --/

সুতরাং আপনি আপনার সহায়ক ইনপুটগুলি LSTM আউটপুটগুলিতে মার্জ করবেন এবং সেখান থেকে আপনার নেটওয়ার্ক চালিয়ে যান। এখন আপনার মডেলটি কেবল মাল্টি-ইনপুট।

উদাহরণস্বরূপ, ধরা যাক যে আপনার নির্দিষ্ট অ্যাপ্লিকেশনটিতে আপনি কেবলমাত্র LSTM আউটপুট ক্রমের শেষ আউটপুট রাখবেন। ধরা যাক যে এটি দৈর্ঘ্যের 10 একটি ভেক্টর You আপনার মার্জ স্তরটি কেবলমাত্র দৈর্ঘ্যের একক ভেক্টর উত্পাদন করতে LSTM আউটপুট ভেক্টরের শেষের দিকে সহায়ক আবহাওয়ার তথ্য সংযোজন করতে পারে But তবে আপনাকে কেবল শেষ LSTM আউটপুট টাইমস্টেপ রাখার দরকার নেই: যদি LSTM 100 টি টাইপস আউটপুট করে থাকে তবে প্রতিটি বৈশিষ্ট্যগুলির একটি 10-ভেক্টর সহ, আপনি এখনও আপনার সহায়ক আবহাওয়ার তথ্যগুলি পরীক্ষা করতে পারেন, যার ফলে 100 টি টাইমপ্লেস, প্রতিটি 11 টি ডেটাপয়েন্টের ভেক্টর নিয়ে গঠিত।

এর কার্যক্ষম এপিআই- তে কেরাস ডকুমেন্টেশনের এটির একটি ভাল ওভারভিউ রয়েছে।

অন্যান্য ক্ষেত্রে, @ হোরাসেটটি যেমন উল্লেখ করেছে, আপনি অ-অস্থায়ী ডেটাতে এলএসটিএমকে শর্ত করতে চাইতে পারেন। উদাহরণস্বরূপ, প্রদত্ত অবস্থানটি আগামীকাল আবহাওয়ার পূর্বাভাস দিন। এই ক্ষেত্রে, ইতিবাচক / নেতিবাচক সমেত তিনটি পরামর্শ এখানে দেওয়া হয়েছে:

  1. প্রথম টাইমস্টেপটিতে আপনার কন্ডিশনার ডেটা রয়েছে, কারণ এটি আপনার আরএনএন এর অভ্যন্তরীণ / লুকানো অবস্থাকে কার্যকরভাবে "সেট" করবে। সত্যি, আমি চাই না এটি করেন, কারণের একটি গুচ্ছ জন্য: আপনার কন্ডিশনার ডেটা আপনার বৈশিষ্ট্য বাকি হিসাবে একই আকৃতি করা প্রয়োজন, (ট্র্যাক করতে কিভাবে আপনি ডেটা ফিড পাওয়া কঠিন হয়ে পড়ে stateful RNNs তৈরি করে তোলে সত্যিই সাবধান হওয়ার পরিপ্রেক্ষিতে নেটওয়ার্কের মধ্যে), নেটওয়ার্ক পর্যাপ্ত সময় (যেমন, দীর্ঘ প্রশিক্ষণের অনুক্রম বা দীর্ঘ ভবিষ্যদ্বাণী ক্রম) ইত্যাদি সহ কন্ডিশনার ডেটা "ভুলে" যেতে পারে etc.

  2. অস্থায়ী তথ্যের অংশ হিসাবে ডেটা অন্তর্ভুক্ত করুন। সুতরাং নির্দিষ্ট টাইমস্টেপের প্রতিটি বৈশিষ্ট্য ভেক্টরে "বেশিরভাগ" সময়-সিরিজের ডেটা অন্তর্ভুক্ত থাকে তবে তারপরে প্রতিটি বৈশিষ্ট্য ভেক্টরের শেষে কন্ডিশনার ডেটা যুক্ত করা হয়। নেটওয়ার্ক কি এটি চিনতে শিখবে? সম্ভবত, তবে তারপরেও, আপনি অ-অনুক্রমিক তথ্য সহ সিক্যুয়েন্স ডেটাটিকে দূষিত করে একটি শক্ত শেখার কাজ তৈরি করছেন। সুতরাং আমি এই নিরুৎসাহিত করা হবে ।

  3. সম্ভবত সেরা পন্থাটি হ'ল শূন্য সময়ে আরএনএন এর লুকানো অবস্থাকে সরাসরি প্রভাবিত করে। এটি কার্পেটি এবং ফি-ফি এবং ভিনিয়ালস এট আল দ্বারা গ্রহণ করা পদ্ধতি । এটা এভাবে কাজ করে:

    1. প্রতিটি প্রশিক্ষণ নমুনা জন্য, আপনার অবস্থা ভেরিয়েবল নেওয়া ।x
    2. আপনার শর্ত ভেরিয়েবলগুলিকে আরএনএন এর অভ্যন্তরীণ অবস্থা হিসাবে সঠিক আকারে আনতে একটি অ্যাফাইন ট্রান্সফর্মেশনের সাথে পুনরায় আকার দিন: (এগুলি এবং প্রশিক্ষণযোগ্য ওজন)। আপনি কেরাসে একটি ঘন স্তর দিয়ে এটি পেতে পারেন।v=Wx+bWb
    3. প্রথম বারের বারের জন্য, আরএনএন এর মান গণনা করার সময় লুকানো অবস্থায় add যুক্ত করুন ।v

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


1
ভাল পরামর্শ, তবে কী যদি LSTM এর আউটপুটে কোনও অ-সময় সিরিজ পূর্বাভাসকের উপর কাঠামোগত নির্ভরতা থাকে।
horaceT

আপনি একটি উদাহরণ দিতে পারেন?
অ্যাডাম সিপনিউস্কি

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

1
দুর্দান্ত প্রশ্ন! আমি এটিকে সম্বোধন করতে সম্পাদনাগুলি অন্তর্ভুক্ত করেছি।
অ্যাডাম সিপনিউস্কি

সম্পাদনা এবং দুটি উল্লেখের জন্য ধন্যবাদ ks বেশ কার্যকর।
horaceT

2

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

https://github.com/philipperemy/cond_rnn/ (টেনসরফ্লো)

আশা করি এটা সাহায্য করবে!


0

কেরাস এলএসটিএম-এ একটি ফাংশন রয়েছে reset_states(states)

তবে প্যারামিটারের রাজ্যগুলি হ'ল গোপনীয় অবস্থা h এবং কোষের রাজ্যের দুটি রাজ্যের সংমিশ্রণ।

States = [h, c]

উপরে বর্ণিত কাগজপত্রগুলিতে আপনার পদ্ধতির সূচনা hবা cপদ্ধতি অনুসারে আপনার আরম্ভ করা উচিত কিনা তা জেনে রাখা আকর্ষণীয় হবে ।


0

এটি সম্ভবত সবচেয়ে দক্ষ উপায় নয়, তবে স্ট্যাটিক ভেরিয়েবলগুলি টাইমরিজগুলির দৈর্ঘ্যে ব্যবহার করে পুনরাবৃত্তি হতে পারে tf.tile()

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