নিউরাল নেটওয়ার্কে ইনপুটগুলিকে কীভাবে রূপান্তর করা যায় এবং দরকারী ফলাফলগুলি কীভাবে আহরণ করতে হয়?


9

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

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

def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
  price = 0

  # a little pinch of this
  price += num_of_bedrooms * 1.0

  # and a big pinch of that
  price += sqft * 1.0

  # maybe a handful of this
  price += neighborhood * 1.0

  # and finally, just a little extra salt for good measure
  price += 1.0

  return price 

অন্যান্য সংস্থানগুলি গণিতগুলিতে আরও বেশি মনোযোগ নিবদ্ধ করে এবং একমাত্র বেসিক কোড উদাহরণটি আমি বুঝতে পেরেছিলাম যে আমি বুঝতে পেরেছি (অর্থাত্ এটি সমস্ত গাওয়া নয়, সমস্ত নাচের চিত্রের শ্রেণিবদ্ধকরণ কোডবেস) এমন একটি বাস্তবায়ন যা নিউরাল নেটওয়ার্ককে একটি এক্সওআর হতে প্রশিক্ষণ দেয় গেটটি কেবল 1 এবং 0 এর মধ্যে ডিল করে।

সুতরাং আমার জ্ঞানের এমন একটি ফাঁক আছে যা আমি কেবল পূরণ করতে পারি না। যদি আমরা বাড়ির দামের পূর্বাভাসের সমস্যায় ফিরে যাই তবে কীভাবে একজন নিউরাল নেটওয়ার্কে খাওয়ার জন্য ডেটা উপযুক্ত করে? উদাহরণ স্বরূপ:

  • শয়নকক্ষের সংখ্যা: 3
  • বর্গ। পা: 2000
  • প্রতিবেশী: নরমালটাউন
  • বিক্রয় মূল্য: $ 250,000

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

স্নায়বিক নেটওয়ার্কের বেশিরভাগ উদাহরণ আমি দেখেছি স্তরগুলির মধ্যে পাসের সংখ্যাটি হয় 0 থেকে 1 বা -1 থেকে 1 হয়। সুতরাং প্রক্রিয়া শেষে আপনি কীভাবে আউটপুট মানটিকে ব্যবহারযোগ্য কিছুতে 185,000 ডলারে রূপান্তর করবেন ?

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

উত্তর:


10

এটি একটি ভাল প্রশ্ন যা আমি যখন প্রথম কোনও এএনএন কোড করার চেষ্টা করছিলাম তখন আমি নিজের সাথে লড়াই করেছিলাম।

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

দ্রষ্টব্য: আমি ধরে নেব যে আপনি f (x) = tanh (x) কে আপনার অ্যাক্টিভেশন ফাংশন হিসাবে ব্যবহার করছেন। আপনি যদি না হন তবে এটি পড়ার পরেও আপনার ডেটা কীভাবে সাধারণ করা যায় তার মাধ্যমে আপনার এখনও তর্ক করা উচিত।

ইনপুট ডেটা কীভাবে প্রস্তুত করবেন:

মূল ধারণাটি হ'ল আপনি চান যে প্রতিটি ইনপুট প্যারামিটারে একটি গুরুত্বপূর্ণ পার্থক্য প্রতিফলিত হতে পারে নিউরনের সক্রিয়করণে একটি উল্লেখযোগ্য প্রকরণটি যেগুলি ইনপুটগুলি খাওয়ানো হচ্ছে। তান (এক্স) অ্যাক্টিভেশন ফাংশনের ডেরিভেটিভের প্লটটি দেখে আপনি দেখতে পাবেন যে উল্লেখযোগ্য slালের অঞ্চলটি উত্স থেকে এক বা দু'একটি দূরত্বে রয়েছে। এর অর্থ হ'ল অ্যাক্টিভেশন ফাংশনে ইনপুট 2000 বা 3000 (x এর মান যার জন্য ডেরিভেটিভ উপেক্ষিতভাবে ছোট), অ্যাক্টিভেশনটির আউটপুট প্রায় অভিন্ন হবে ... সুতরাং আপনার নিউরনের রাজ্যটি পার্থক্য থেকে স্বতন্ত্র হবে 2000 এবং 3000 এবং আপনার নেটওয়ার্ক কখনই সেই ব্যাপ্তির মান থেকে কোনও ভবিষ্যদ্বাণীপূর্ণ শক্তি উত্পাদন করতে পারে না।

সুতরাং আপনি যদি বাড়ির স্কোয়ার ফুটেজটিকে নিউরনে রূপান্তর করতে চান তবে আপনাকে স্কোয়ার ফুটেজটিকে সাধারণকরণ করতে হবে যাতে নেটওয়ার্ক 2000 এবং 3000 এর মধ্যে পার্থক্য বলতে পারে this এটি করার একটি উপায় যাতে আপনার সমস্ত তাত্পর্যপূর্ণ তাত্পর্যগুলি হয় নিউরনের দ্বারা ডেটা 'লক্ষ্য করা যায়' ইনপুটগুলিকে জেড-স্কোর-স্বাভাবিক করতে হয়

  • আপনার সমস্ত স্কোয়ার ফুটেজ মান সংগ্রহ করুন (আপনার প্রশিক্ষণ সেট থেকে) এবং গড় এবং মান বিচ্যুতি গণনা করুন। গড় এবং স্ট্যান্ডার্ড বিচ্যুতি সংরক্ষণ করুন --- পরীক্ষা করার সময় নতুন বর্গ ফুটেজ মানগুলি স্বাভাবিক করার জন্য আপনার এই তথ্য দরকার।

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

  • প্রতিটি ইনপুট ভেরিয়েবলের জন্য উপরের কাজটি করুন।

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

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

  • আউটপুট ভেরিয়েবলের গড় গণনা করুন এবং এটি সঞ্চয় করুন।
  • গড় থেকে আউটপুট ভেরিয়েবলের সর্বাধিক বিচ্যুতি গণনা করুন। পাইথন:MaxDev = max([abs(DataPoint-numpy.mean(TrainingData)) for DataPoint in TrainingData])
  • যখন নেটওয়ার্ক -1 এবং 1 এর মধ্যে আউটপুট (গুলি) দেয়, তখন আউটপুটকে গুণ করে MaxDevএবং এটিকে যোগ করে।

আপনার সাধারণীকরণ-পুনর্নবীকরণ প্রকল্পটি উপযুক্ত কিনা তা দেখতে আপনি দুটি বেসিক দ্রুত চেক করতে পারেন (এগুলি প্রয়োজনীয়, তবে সম্ভবত পর্যাপ্ত শর্ত নয়):

  1. যদি সমস্ত ইনপুট মানগুলি গড় হয় (যেমন বেডরুমের গড় নম্বর, গড় বর্গফুট ইত্যাদি), তবে নেটওয়ার্কের আউটপুটটিও কি আউটপুট ভেরিয়েবলের (যেমন বাড়ির মান) গড়ের সমান? (এটা করা উচিত.)
  2. সমস্ত ইনপুট মান যদি অস্বাভাবিকভাবে উচ্চ / নিম্ন হয় তবে নেটওয়ার্কের আউটপুটটিও কি অস্বাভাবিকভাবে উচ্চ / নিম্ন হয়? (এটি কেবলমাত্র যদি সমস্ত ইনপুট আউটপুটটির সাথে ইতিবাচকভাবে সম্পর্কিত হয় তবেই কাজ করে ... যদি তাদের কয়েকটি বিপরীতভাবে সম্পর্কিত হয় তবে আপনাকে আরও কিছুটা ভাবতে হবে)।

লক্ষ্য করুন যে এখানে উপস্থাপিত প্রকল্পটি এই দুটি শর্তকে সন্তুষ্ট করে।

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

উদাহরণস্বরূপ: আপনি আপনার নেটওয়ার্কের পক্ষে নেতিবাচক ঘরের মানগুলির পূর্বাভাস দেওয়া অসম্ভব করে তুলতে পারেন। আপনি কীভাবে এটি করবেন তা ভেবে দেখুন। আউটপুটটিকে সাধারণীকরণ করুন যাতে -1 কে 0-এ ম্যাপ করা হয়।

আপনি যদি নিজের নেটওয়ার্কের পূর্বাভাস দিতে পারে এমন মানগুলির কোনও সীমা নির্ধারণ করতে চান, তবে আপনি একটি ফাংশনের মাধ্যমে নেটওয়ার্কের আউটপুটটি চালাতে পারেন যা [-1,1] পরিসীমাটি সমস্ত আসল সংখ্যার মানচিত্র করে ... আর্টাকান (এক্স) এর মতো! যতক্ষণ আপনি প্রশিক্ষণের সময় এটি করেন আপনার নেটওয়ার্ক এটিকে সামঞ্জস্য করার জন্য এর ওজনগুলি সামঞ্জস্য করবে।

আশা করি এটা উপকারে এসেছিল। যদি আপনার আরও প্রশ্ন থাকে তাহলে আমার সাথে জেনে নেয়া যাক। আমার এএনএন মডিউলটি পাইথনে, যাইহোক, তাই আমার কাছে ভাষা-নির্দিষ্ট পরামর্শ থাকতে পারে।


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

প্রশ্ন দুটি। যদি আমার বর্গ। ফুট প্রশিক্ষণের ডেটা ছিল 2000 ডলার, 800, 850, 550, 2000} তখন আমার জেড-স্কোর ইনপুটগুলি 1900, 1500, 600 for হবে (যদি আমি সঠিকভাবে গণনা করেছি) {1.0496, 0.4134, -1.0177}} সুতরাং সেই মানগুলির মধ্যে একটি হল> 1 এবং একটি হ'ল <-1, আমি সেগুলি দিয়ে কী করব? এগুলিকে ইনপুট লেয়ার নোডগুলিতে ইনপুট করুন নির্বিশেষে বা তাদের 1 এবং -1 তে গোল করবেন? 1900 এবং 600 কেন 550 - 2000 সীমাতে থাকে যখন সেই মানগুলি উত্পাদন করে? এত ছোট একটি ডেটা সেট থাকার কারণে এটি কি ডেটার কৌশল মাত্র?
ডেভিড

আউটপুট স্তর পুনর্নির্মাণের ক্ষেত্রে, আমার কি এটি সঠিকভাবে আছে যে আপনি আউটপুটটি ন্যূনতম এবং সর্বোচ্চ মানগুলিতে প্লট করবেন? তাই যদি সর্বনিম্ন মান হত0একটিএনটিমিএকটিএক্সআমিমিতোমার দর্শন লগ করামি100 এবং আউটপুট শূন্য ছিল (অনুমান করে -1 থেকে 1) তখন তা $ 50 হিসাবে অনুবাদ করবে?
ডেভিড

মনে রাখবেন ইনপুটগুলি 1 থেকে -1 এর মধ্যে কঠোরভাবে হওয়া দরকার না। ইনপুটগুলির জন্য আপনার যা যা প্রয়োজন তা হ'ল বেশিরভাগ ডেটা সেই পরিসরে। একটিরও বেশি বা তার চেয়ে কম মানটির অর্থ হল যে বিন্দুটি গড় থেকে একাধিক স্ট্যান্ডার্ড বিচ্যুতি হয়, সুতরাং সেই বিন্দুটি ডেটার উচ্চতর প্রান্তের কাছাকাছি থাকে। আপনার ডেটা [-1, 1] এর বাইরে যাওয়ার জন্য এটি কিছুটা বিরল হওয়া উচিত, [-2, 2] এর বাইরে যাওয়ার জন্য আরও বিরল এবং [-3, 3] এর বাইরে যাওয়া অত্যন্ত বিরল। তানহ (x) দেখুন এবং আপনি দেখতে পাবেন সংবেদনশীল পরিসরটি কঠোরভাবে -1 এবং 1 এর মধ্যে নয়, তবে এর থেকে কিছুটা দূরে চলে।
মার্কো বাকী

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