আরএনএন এর একাধিক বৈশিষ্ট্য রয়েছে


27

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

কারও উদাহরণ থাকলে আমি এটির প্রশংসা করব।

ধন্যবাদ!


1
নিশ্চিত নয় যে আপনি "একাধিক বৈশিষ্ট্য" দ্বারা কী বোঝাতে চেয়েছিলেন। আপনি যদি বোঝাতে চান যে একাধিক বৈশিষ্ট্য শেখার উপর প্রভাব ফেলছে, তবে আপনি কেবল একটি মাল্টিভারিয়েট ডিজাইনের ম্যাট্রিক্স ব্যবহার করেন। Pls একটি উদাহরণ বা কিছু দ্বারা স্পষ্ট করে।
horaceT

@ হোরেসটি আমি multiple features এখানে বিশদভাবে জানিয়েছি যে , সংখ্যার ডেটা এবং অ-সংখ্যাসূচক ডেটা যুক্ত বৈশিষ্ট্যগুলি সহ টাইম-সিরিজ পূর্বাভাসের জন্য আরএনএন কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও নির্দিষ্ট প্রশ্ন?
এইচ এইচ

উত্তর:


25

পুনরাবৃত্ত নিউরাল নেটওয়ার্কগুলি (আরএনএন) সিক্যুয়েন্স ডেটা শিখতে ডিজাইন করা হয়েছে। আপনি অনুমান হিসাবে, তারা অবশ্যই ইনপুট হিসাবে একাধিক বৈশিষ্ট্য নিতে পারে! Keras 'RNNs 2D কেনে (নেওয়া টি , এফ timesteps এর) টি এবং বৈশিষ্ট্য এফ (আমি ব্যাচ মাত্রা এখানে উপেক্ষা করছি)।

তবে, আপনার সবসময় মধ্যবর্তী টাইমস্টেপগুলি দরকার হয় না বা চান না, t = 1, 2 ... ( টি - 1)। অতএব, কেরাস উভয় মোডকে নমনীয়ভাবে সমর্থন করে। এটিতে সমস্ত টি টাইমস্টেপ আউটপুট আনতে, return_sequences=Trueআপনার আরএনএন (যেমন, LSTMবা GRU) নির্মাণের সময় পাস করুন । আপনি যদি কেবল শেষ টাইমস্টেপ টি = টি চান , তবে ব্যবহার করুন return_sequences=False(আপনি যদি return_sequencesকনস্ট্রাক্টরের কাছে না যান তবে এটি ডিফল্ট )।

নীচে এই দুটি মোডের উদাহরণ দেওয়া আছে।

উদাহরণ 1: ক্রম শেখা

এখানে এলএসটিএম (আরএনএন প্রকারের) প্রশিক্ষণের একটি দ্রুত উদাহরণ রয়েছে যা পুরো ক্রমটি চারপাশে রাখে। এই উদাহরণে, প্রতিটি ইনপুট ডেটার পয়েন্টটিতে 2 টি টাইপস রয়েছে, যার প্রতিটি 3 টি বৈশিষ্ট্য রয়েছে; আউটপুট ডেটাতে 2 টি টাইমস্টেপ রয়েছে (কারণ return_sequences=True), প্রতিটি 4 টি ডেটা পয়েন্ট সহ (কারণ এটি আমি যে আকারে পাস করি LSTM)।

import keras.layers as L
import keras.models as M

import numpy

# The inputs to the model.
# We will create two data points, just for the example.
data_x = numpy.array([
    # Datapoint 1
    [
        # Input features at timestep 1
        [1, 2, 3],
        # Input features at timestep 2
        [4, 5, 6]
    ],
    # Datapoint 2
    [
        # Features at timestep 1
        [7, 8, 9],
        # Features at timestep 2
        [10, 11, 12]
    ]
])

# The desired model outputs.
# We will create two data points, just for the example.
data_y = numpy.array([
    # Datapoint 1
    [
        # Target features at timestep 1
        [101, 102, 103, 104],
        # Target features at timestep 2
        [105, 106, 107, 108]
    ],
    # Datapoint 2
    [
        # Target features at timestep 1
        [201, 202, 203, 204],
        # Target features at timestep 2
        [205, 206, 207, 208]
    ]
])

# Each input data point has 2 timesteps, each with 3 features.
# So the input shape (excluding batch_size) is (2, 3), which
# matches the shape of each data point in data_x above.
model_input = L.Input(shape=(2, 3))

# This RNN will return timesteps with 4 features each.
# Because return_sequences=True, it will output 2 timesteps, each
# with 4 features. So the output shape (excluding batch size) is
# (2, 4), which matches the shape of each data point in data_y above.
model_output = L.LSTM(4, return_sequences=True)(model_input)

# Create the model.
model = M.Model(input=model_input, output=model_output)

# You need to pick appropriate loss/optimizers for your problem.
# I'm just using these to make the example compile.
model.compile('sgd', 'mean_squared_error')

# Train
model.fit(data_x, data_y)

উদাহরণ 2: শেষ টাইমস্টেপ শেখা

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

import keras.layers as L
import keras.models as M

import numpy

# The inputs to the model.
# We will create two data points, just for the example.
data_x = numpy.array([
    # Datapoint 1
    [
        # Input features at timestep 1
        [1, 2, 3],
        # Input features at timestep 2
        [4, 5, 6]
    ],
    # Datapoint 2
    [
        # Features at timestep 1
        [7, 8, 9],
        # Features at timestep 2
        [10, 11, 12]
    ]
])

# The desired model outputs.
# We will create two data points, just for the example.
data_y = numpy.array([
    # Datapoint 1
    # Target features at timestep 2
    [105, 106, 107, 108],
    # Datapoint 2
    # Target features at timestep 2
    [205, 206, 207, 208]
])

# Each input data point has 2 timesteps, each with 3 features.
# So the input shape (excluding batch_size) is (2, 3), which
# matches the shape of each data point in data_x above.
model_input = L.Input(shape=(2, 3))

# This RNN will return timesteps with 4 features each.
# Because return_sequences=False, it will output 2 timesteps, each
# with 4 features. So the output shape (excluding batch size) is
# (2, 4), which matches the shape of each data point in data_y above.
model_output = L.LSTM(4, return_sequences=False)(model_input)

# Create the model.
model = M.Model(input=model_input, output=model_output)

# You need to pick appropriate loss/optimizers for your problem.
# I'm just using these to make the example compile.
model.compile('sgd', 'mean_squared_error')

# Train
model.fit(data_x, data_y)

আপনার দুর্দান্ত ব্যাখ্যার জন্য আপনাকে ধন্যবাদ। ডেটাপয়েন্ট # 1 এবং ডেটাপয়েন্ট # 2 এর মধ্যে সম্পর্ক কী। উদাহরণস্বরূপ, প্রথম পরিস্থিতিতে, আপনি যদি ডেটাপয়েন্ট 2 টি সরিয়ে ডেটাপয়েন্ট 1 এর অধীনে রাখেন তবে এখন আমাদের 4 টি সময় রয়েছে। কীভাবে পুরো মডেলটিকে এটি প্রভাবিত করবে?
Rjay155

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

@ অ্যাডাম সিপনিউস্কি আমার কাছে y সম্পর্কে প্রশ্ন রয়েছে। ডেটা_ই = numpy.array ([# ডেটাপয়েন্ট 1 # টার্গেট বৈশিষ্ট্য টাইমস্টেপ 2 [[105, 106, 107, 108], [0, 1]], # ডেটাপয়েন্ট 2 # টার্গেট বৈশিষ্ট্য টাইমস্টেপ 2 এ [[205, 206, 207 , 208], [[1, 0]]]]) আমার y এর কোনও একটি যদি বৈশিষ্ট্যযুক্ত বৈশিষ্ট্য হয়। আমি কিভাবে এই কাঠামো হবে। ধন্যবাদ!
হুয়া ইয়ে

2
সেক্ষেত্রে আপনার সম্ভবত আরএনএনের আউটপুটটিকে ঘন স্তর হিসাবে খাওয়ানো উচিত, যাতে প্রতিটি আউটপুট টাইমস্টেপ এক-গরম বিভাগে ম্যাপ হয়ে যায়।
অ্যাডাম সিপনিউস্কি

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