একটি নিউরাল নেটওয়ার্ক পরবর্তী সিউডো এলোমেলো সংখ্যার পূর্বাভাস দেওয়ার জন্য ব্যবহার করা যেতে পারে?


17

এলোমেলো সংখ্যার জেনারেটর থেকে আউটপুট কোনও নিউরাল নেটওয়ার্ককে খাওয়ানো এবং এটি হ্যাশিং (বা জেনারেটর) ফাংশন শিখতে আশা করা সম্ভব, যাতে এটি নির্ধারণ করতে পারে যে পরবর্তী উত্পন্ন সিউডো-র্যান্ডম নম্বরটি কী হবে?

এরকম কিছু ইতিমধ্যে বিদ্যমান? যদি এই বা এর সাথে সম্পর্কিত (সিউডো-এলোমেলো সংখ্যার পূর্বাভাসের সাথে) ইতিমধ্যে গবেষণা করা হয়, তবে কেউ কি আমাকে সঠিক সংস্থানগুলিতে নির্দেশ করতে পারে?

বর্তমানে, আমি এই গ্রন্থাগারটি এবং এর সম্পর্কিত লিঙ্কগুলি দেখছি। https://github.com/Vict0rSch/deep_learning/tree/master/keras/recurrent


উত্তর:


13

আমরা একটি নিখুঁত RNG বিষয়ে কথা হয়, তবে উত্তর হবে একটি স্পষ্ট কোন । সত্যই এলোমেলো সংখ্যার পূর্বাভাস দেওয়া অসম্ভব, অন্যথায় এটি সত্যই এলোমেলো হবে না।

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

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

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

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

এটিও লক্ষণীয় যে ক্রিপ্টোগ্রাফিটি ভাঙতে কোনও পিআরএনজির আউটপুট সম্পর্কে ঠিক ভবিষ্যদ্বাণী করা প্রয়োজন হয় না - এটি বাস্তবায়নের লক্ষণীয়ভাবে দুর্বল করার জন্য 50% এর কিছুটা কমের সাথে পরবর্তী বিটটি পূর্বাভাস দেওয়ার পক্ষে যথেষ্ট হতে পারে। সুতরাং আপনি যদি 55% সাফল্যের হারের সাথে একটি পিআরএনজি (ক্রিপ্টোগ্রাফির জন্য সুরক্ষিত বিবেচিত) এর পরবর্তী বিট পূর্বাভাস দেয় এমন নিউরাল নেটওয়ার্ক তৈরি করতে সক্ষম হন তবে আপনি সম্ভবত বেশ কিছুক্ষণের জন্য সুরক্ষা খবরের শিরোনাম বানাবেন।


2
বাহ্ এর পিছনে ব্যাখ্যার জন্য ধন্যবাদ। আমি প্যাটার্নটি বিশ্লেষণ করার চেষ্টা করছি এবং পরবর্তী বিটটি পূর্বাভাস দেব এবং এটি কোনও নিখুঁত আরএনজি নয়, তবে কিছুটা শক্ত পিআরএনজি। তবে এটি আর্টের রাষ্ট্রও নয়। আমি মনে করি যে সামান্য গণনামূলক শক্তি এবং যথাযথ প্রয়োগের সাথে আমি আরও বেশি না হলে 60০-70০% এর সাথে ভবিষ্যদ্বাণী করেছিলাম। যদি সম্ভব হয় তবে আপনি যে কোনও সংস্থানগুলিতে এটি সম্পর্কে আরও পড়তে পারেন সেখানে নির্দেশ করতে পারেন। আমি কোনও গবেষণার পটভূমি এবং আরও অনেক বিকাশকারী নই।
অ্যাশটাইসন

3

মেশিন লার্নিংয়ে সম্পূর্ণ নবাগত হওয়ার কারণে, আমি এই পরীক্ষাটি করেছি (সাইকিট-লার্ন ব্যবহার করে):

  • 90 এর মধ্যে এন সংখ্যা নির্বাচন করতে পাইথন র্যান্ডম.চয়েজস ফাংশন ব্যবহার করে সিউডো-র্যান্ডম এক্সট্রাকশনগুলির একটি বৃহত সংখ্যক (এন) তৈরি করেছে।

  • নিম্নলিখিত হিসাবে রচনা প্রশিক্ষণের ডেটা সহ একটি এমএলপি শ্রেণিবদ্ধ প্রশিক্ষিত:

    • ith নমুনা: এক্স <- লটারি ফলাফল [i: i + 100], Y <- লটারি ফলাফল [i]

    অনুশীলনে, আমি একটি ফাংশন লক্ষ্য করেছি যা এন নম্বর দিয়েছে, পরবর্তীটির পূর্বাভাস দিয়েছিল।

  • প্রশিক্ষিত শ্রেণিবদ্ধকে বাকী সংখ্যাগুলির পূর্বাভাস দিতে বলেছিলেন।

ফলাফল:

  • অবশ্যই, ক্লাসিফিকেশনর নিউরাল নেটওয়ার্কগুলির উপর ভিত্তি করে এলোমেলো অনুমানের একটি বা অন্য কৌশলগুলির সাথে তুলনাযোগ্য একটি বিজয়ী স্কোর অর্জন করেছিল (আমি স্কিকিট-লার্ন লাইব্রেরিতে উপলব্ধ কয়েকটি শ্রেণিবদ্ধের সাথে ফলাফলের তুলনা করেছি)

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

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


3

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

from random import randint
from numpy import array
from numpy import argmax
from pandas import concat
from pandas import DataFrame
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers import Dense

# generate a sequence of random numbers in [0, 99]
def generate_sequence(length=25):
    return [randint(0, 99) for _ in range(length)]

# one hot encode sequence
def one_hot_encode(sequence, n_unique=100):
    encoding = list()
    for value in sequence:
        vector = [0 for _ in range(n_unique)]
        vector[value] = 1
        encoding.append(vector)
    return array(encoding)

# decode a one hot encoded string
def one_hot_decode(encoded_seq):
    return [argmax(vector) for vector in encoded_seq]

# generate data for the lstm
def generate_data():
    # generate sequence
    sequence = generate_sequence()
    # one hot encode
    encoded = one_hot_encode(sequence)
    # create lag inputs
    df = DataFrame(encoded)
    df = concat([df.shift(4), df.shift(3), df.shift(2), df.shift(1), df], axis=1)
    # remove non-viable rows
    values = df.values
    values = values[5:,:]
    # convert to 3d for input
    X = values.reshape(len(values), 5, 100)
    # drop last value from y
    y = encoded[4:-1,:]
    return X, y

# define model
model = Sequential()
model.add(LSTM(50, batch_input_shape=(5, 5, 100), stateful=True))
model.add(Dense(100, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])
# fit model
for i in range(2000):
    X, y = generate_data()
    model.fit(X, y, epochs=1, batch_size=5, verbose=2, shuffle=False)
    model.reset_states()
# evaluate model on new data
X, y = generate_data()
yhat = model.predict(X, batch_size=5)
print('Expected:  %s' % one_hot_decode(y))
print('Predicted: %s' % one_hot_decode(yhat))

আমি চেষ্টা করেছি এবং এটি সত্যিই বেশ ভাল কাজ করে! আমার পুরানো ধীর নেটবুকটিতে কয়েক মিনিট সময় নিয়েছে। এখানে আমার নিজস্ব আউটপুট, উপরের লিঙ্কটি থেকে আলাদা এবং আপনি দেখতে পাচ্ছেন যে ম্যাচটি নিখুঁত নয়, সুতরাং আমি মনে করি প্রস্থান মাপদণ্ডটি কিছুটা অনুমোদিত iss

...
 - 0s - loss: 0.2545 - acc: 1.0000
Epoch 1/1
 - 0s - loss: 0.1845 - acc: 1.0000
Epoch 1/1
 - 0s - loss: 0.3113 - acc: 0.9500
Expected:  [14, 37, 0, 65, 30, 7, 11, 6, 16, 19, 68, 4, 25, 2, 79, 45, 95, 92, 32, 33]
Predicted: [14, 37, 0, 65, 30, 7, 11, 6, 16, 19, 68, 4, 25, 2, 95, 45, 95, 92, 32, 33]

এটি এলোমেলো ক্রম অনুমান করতে শিখছে না - এটি এটি প্রতিধ্বনি করতে শিখছে। কংক্রিটের সাথে, প্রশিক্ষণের নমুনাগুলি, এক্স, 5 এলোমেলো পূর্ণসংখ্যা এবং আউটপুট, y, 5 এর 4 র্থ পূর্ণসংখ্যা হয় For উদাহরণস্বরূপ, যদি এক্স = [15, 33, 44, 30, 3], y = 30 হয়। এলএসটিএম চতুর্থ নমুনা প্রতিধ্বনি করতে শিখছে।
ভাবনা

হ্যাঁ, ভাল কথা। আমি এখনও এটি LSTM ব্যবহারের একটি খুব আকর্ষণীয় ব্যবহারিক উদাহরণ বলে মনে করি। আপনি যদি কেবল ইনপুট হিসাবে দেওয়া বীজ থেকে মার্সেন টুইস্টার এর মতো কিছু শিখতে জানেন তবে দয়া করে এখানে দেখার আগ্রহী হওয়ায় দয়া করে এটি এখানে পোস্ট করুন। যথেষ্ট নমুনা দিয়ে সম্ভব বলে মনে হচ্ছে তবে আমি সম্পূর্ণ ভুল হতে পারি।
isp-zax

2

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


1
সত্য। বেশ দার্শনিক যদিও। কিছুটা প্রযুক্তিগত উত্তর আশা করা গেছে। যাইহোক ধন্যবাদ :)
অ্যাশটাইসন

2

ডেমেন্টো যা বলেছিল তার সাথে যুক্ত করে, র্যান্ডম নম্বর জেনারেশন অ্যালগরিদমে এলোমেলোতার পরিধিটিই মূল বিষয়। নিম্নলিখিতটি এমন কিছু ডিজাইন রয়েছে যা আরএনজিকে দুর্বল করে তুলতে পারে:
গোপন সিকোয়েন্সগুলি মনে
করুন এটি তৈরি করা অক্ষরের আগের কয়েকটি অনুক্রম: (কেবলমাত্র ব্যবহারিক ব্যবহারের জন্য বৃহত্তর পরিসরের জন্য এটি ব্যবহৃত হয়)

lwjVJA
Ls3Ajg
xpKr+A
XleXYg
9hyCzA
jeFuNg
JaZZoA

প্রাথমিকভাবে, আপনি প্রজন্মের কোনও প্যাটার্ন পর্যবেক্ষণ করতে পারবেন না তবে সেগুলি বেস 64 এঙ্কোডিং এবং তারপরে হেক্সে পরিবর্তন করুন, আমরা নিম্নলিখিতটি পাই:

9708D524
2ECDC08E
C692ABF8
5E579762
F61C82CC
8DE16E36
25A659A0

এখন যদি আমরা প্রতিটি সংখ্যা পূর্ববর্তী একটিকে বিয়োগ করি তবে আমরা এটি পাই:

FF97C4EB6A
97C4EB6A
FF97C4EB6A
97C4EB6A
FF97C4EB6A
FF97C4EB6A

এটি সূচিত করে যে অ্যালগরিদম কেবল পূর্বের মানটিতে 0x97C4EB6A যুক্ত করে, ফলাফলটি একটি 32-বিট সংখ্যায় কাটায় এবং বেস 64-ডেটা এনকোড করে।
উপরোক্ত একটি প্রাথমিক উদাহরণ। আজকের এমএল অ্যালগরিদম এবং সিস্টেমগুলি আরও জটিল নিদর্শনগুলি শিখতে এবং ভবিষ্যদ্বাণী করতে যথেষ্ট সক্ষম।

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

যখনই দুর্বল আরএনজি অ্যালগরিদমগুলি প্রয়োগ করা হয় যা স্টোকাস্টিক হিসাবে উপস্থিত হয়, পর্যাপ্ত ডেটাসেটের ক্ষেত্রে সেগুলি নিখুঁত নির্ভুলতার সাথে এক্সট্রাপোল্টেড ফরোয়ার্ড বা পিছনের দিকে যেতে পারে


আপনি মাত্রই আমার কাছে নিজের ধারণার পরিমাণ এবং তার যোগাযোগের মধ্যে একটি ধারণার নমুনা নির্ধারণ করার পদ্ধতি হিসাবে আমি জানতাম যে আমি আমার অন্তর্দৃষ্টি থেকে দূরে নই :)
ববস

বিবর্তন প্রক্রিয়া ধরে রাখার ক্ষেত্রে যে ভাষাটি আমরা ব্যবহার করি যা একটি विनम्रতা থেকে উদ্ভূত এবং এটি মানবিক বৌদ্ধিকতা বজায় রাখার পদ্ধতিটি অনুধাবন করে যখন আমরা এটিকে বদ্ধমূলতার সাথে বিচ্ছিন্নভাবে "পণ্য" হিসাবে বিবেচনা করার একটি অবিচ্ছেদ্য প্রশ্ন উত্থাপন করি। হাঃ হাঃ হাঃ.
ববস

এলোমেলোতা বা এর উপলব্ধি হ'ল বাস্তবতা এবং মানুষের উপলব্ধিগুলির মধ্যে একটি বিভেদ এবং কারণ এর বিচ্ছিন্নতা কেবল সংবেদনশীল উপলব্ধির একটি অবশিষ্টাংশ সিদ্ধান্ত নেয় প্রতিটি এবং প্রত্যেকের চিত্র যা আমরা প্রত্যক্ষভাবে পর্যবেক্ষণ করি এবং সংবেদনশীল এলোমেলোতা যুক্ত করে কারণ মানুষের মধ্যে ধারণাগত বিতরণে কেন্দ্রীভূত কারণের মধ্যে বৌদ্ধিক বিভেদ রয়েছে।
ববস

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

সিউডো এলোমেলোতা হ'ল প্লাস্টিকের এমন একটি সম্পত্তি যা প্রকৃতপক্ষে পৃথিবীর গুণাবলীর উপরে হস্তান্তরিত হয় যা তাদের কাছে অত্যধিক উপেক্ষা করা এবং এর সাথে অপরিষ্কার বা মানবিক প্ররোচনা রয়েছে। দৃter়তা বিশ্বাস ও দখল এবং নিশ্চিত জীবনের দৃ product় যোগাযোগের দিকে পরিচালিত করে এবং কষ্টের ভারসাম্যের ভারসাম্যহীন সমস্যাগুলির প্রতিরোধ না করে একটি ভাল জীবনের পণ্যটির পুষ্টিকর যোগাযোগ করে to
ববস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.