নিউরাল নেটওয়ার্ক গণনায় লুকানো স্তরটি কী করে?


187

আমি নিশ্চিত যে অনেক লোক 'আপনার জন্য আমাকে গুগল করুক' এর লিঙ্কগুলির সাথে প্রতিক্রিয়া জানাবে, তাই আমি বলতে চাই যে আমি এটি বের করার চেষ্টা করেছি তাই দয়া করে আমার বোঝার অভাবটি ক্ষমা করুন, তবে আমি কীভাবে বুঝতে পারি না একটি নিউরাল নেটওয়ার্কের বাস্তবিক বাস্তবায়ন কাজ করে।

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

লুকানো স্তরে কী গণনা করা হয়?

আউটপুট স্তরটিতে কীভাবে এই গণনাগুলি ম্যাপ করা হয়?

আউটপুট স্তর কীভাবে কাজ করে? লুকানো স্তর থেকে ডেটা-সাধারণকরণ?

ইনপুট স্তরের কিছু স্তর কেন লুকানো স্তরের সাথে সংযুক্ত থাকে এবং কিছুটি হয় না?


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

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

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

উত্তর:


230

তিনটি বাক্য সংস্করণ:

  • প্রতিটি স্তর আপনার আগের স্তরের যে কোনও ক্রিয়াকলাপ প্রয়োগ করতে পারে (সাধারণত একটি রৈখিক রূপান্তর যার পরে স্কোয়াশিং ননলাইনারিটি থাকে)।

  • লুকানো স্তরগুলির কাজ হ'ল ইনপুটগুলিকে এমন কিছুতে রূপান্তর করা যা আউটপুট স্তরটি ব্যবহার করতে পারে।

  • আউটপুট স্তর হ'ল স্তরের ক্রিয়াকলাপগুলিকে আপনার আউটপুটটি যে পরিমাণ স্কেলে যেতে চেয়েছিল তা রূপান্তরিত করে।

আপনি যেমন 5:

আপনি যদি কোনও কম্পিউটারে কোনও ছবিতে বাস আছে কিনা তা জানানোর জন্য কম্পিউটার চান, কম্পিউটারের যদি সঠিক সরঞ্জাম থাকে তবে তার জন্য আরও সহজ সময় থাকতে পারে।

সুতরাং আপনার বাস ডিটেক্টরটি হুইল ডিটেক্টর (এটি আপনাকে একটি বাহন বলতে আপনাকে সহায়তা করার জন্য) এবং একটি বাক্স ডিটেক্টর (যেহেতু বাসটি একটি বড় বাক্সের মতো আকারযুক্ত) এবং একটি আকার ডিটেক্টর দিয়ে তৈরি হতে পারে (আপনাকে বলার জন্য এটি গাড়ি হওয়া অনেক বড় )। এটি আপনার লুকানো স্তরের তিনটি উপাদান: এগুলি কাঁচা চিত্রের অংশ নয়, তারা বাসগুলি সনাক্ত করতে আপনাকে ডিজাইন করার জন্য তৈরি করা সরঞ্জাম।

যদি এই তিনটি ডিটেক্টর তিনটিই চালু করে (বা সম্ভবত তারা বিশেষভাবে সক্রিয় থাকে) তবে আপনার সামনে একটি বাসের ভাল সুযোগ রয়েছে।

নিউরাল নেটগুলি দরকারী কারণ প্রচুর ডিটেক্টর তৈরির জন্য এবং তাদের একসাথে রাখার জন্য ভাল সরঞ্জাম (যেমন ব্যাকপ্রোপেশন) রয়েছে।


আপনি যেমন একজন প্রাপ্তবয়স্ক

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

আসুন ইনপুট ভেক্টর , লুকানো স্তর সক্রিয়করণ , এবং আউটপুট অ্যাক্টিভেশন । আপনি কিছু ফাংশন আছে থেকে মানচিত্র করার এবং অন্য ফাংশন থেকে মানচিত্র করার । h y f x h g h yএক্সYএক্সY

সুতরাং লুকানো স্তরের অ্যাক্টিভেশনটি এবং নেটওয়ার্কের আউটপুট ।g ( f ( x ) )(এক্স)((এক্স))

কেন কেবল একটির পরিবর্তে দুটি ফাংশন ( এবং ) রয়েছে?g

যদি ফাংশন প্রতি জটিলতার মাত্রা সীমাবদ্ধ থাকে তবে এমন জিনিসগুলি গণনা করতে পারে যা এবং স্বতন্ত্রভাবে করতে পারে না। f g((এক্স))


যৌক্তিক ফাংশন সহ একটি উদাহরণ:

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

প্রথম স্তর ফাংশন:

  • নিশ্চিত করুন যে কমপক্ষে একটি উপাদান "সত্য" (OR ব্যবহার করে)
  • নিশ্চিত হয়ে নিন যে তারা সবাই "সত্য" নয় (নন্দ ব্যবহার করছে)

দ্বিতীয় স্তর ফাংশন:

  • নিশ্চিত হয়ে নিন যে প্রথম স্তরের উভয় মানদণ্ডই সন্তুষ্ট (এ্যান্ড ব্যবহার করে)

নেটওয়ার্কের আউটপুট কেবল এই দ্বিতীয় ফাংশনের ফলাফল। প্রথম স্তরটি ইনপুটগুলিকে এমন কিছুতে রূপান্তর করে যা দ্বিতীয় স্তরটি ব্যবহার করতে পারে যাতে পুরো নেটওয়ার্কটি XOR সম্পাদন করতে পারে।


চিত্র সহ একটি উদাহরণ:

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

প্রথম স্তরটি ইমেজটিতে প্রান্তের সংক্ষিপ্ত টুকরোগুলি সন্ধান করে: কাঁচা পিক্সেল ডেটা থেকে এগুলি খুঁজে পাওয়া খুব সহজ তবে আপনি কোনও মুখ বা বাস বা একটি হাতির দিকে তাকিয়ে আছেন কিনা তা জানার জন্য তারা নিজেরাই খুব কার্যকর নয়'re ।

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

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

এটি দরকারী কারণ ফেস ডিটেক্টরগুলি চোখের সনাক্তকারী এবং নাক সনাক্তকারীগুলির থেকে সহজেই তৈরি করা সহজ, তবে পিক্সেলের তীব্রতার চেয়ে আরও শক্তিশালী।

সুতরাং প্রতিটি স্তর আপনাকে কাঁচা পিক্সেল থেকে আরও দূরে এবং আপনার চূড়ান্ত লক্ষ্যের (যেমন মুখ সনাক্তকরণ বা বাস সনাক্তকরণ) কাছাকাছি পেতে দেয়।


বাছাই করা অন্যান্য প্রশ্নের উত্তর

"ইনপুট স্তরের কিছু স্তর কেন লুকানো স্তরের সাথে সংযুক্ত থাকে এবং কিছুটি হয় না?"

নেটওয়ার্কে সংযোগ বিচ্ছিন্ন নোডগুলিকে "পক্ষপাত" নোড বলা হয়। এখানে একটি দুর্দান্ত ব্যাখ্যা আছে । সংক্ষিপ্ত উত্তরটি হ'ল তারা প্রতিরোধের ক্ষেত্রে বিরতিযুক্ত পদগুলির মতো like

"চিত্রের উদাহরণে" আই ডিটেক্টর "ছবিগুলি কোথা থেকে এসেছে?"

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

ইন এই কাগজ বিশ্বের বৃহত্তম নিউরাল জাল এক সঙ্গে কিছু Google Folks দ্বারা, তারা একটি "মুখ আবিষ্কারক" স্নায়ুর এবং একটি "বিড়াল আবিষ্কারক" স্নায়ুর এই ভাবে, সেইসাথে একটি দ্বিতীয় পথ দেখাতে: তারা দেন প্রকৃত চিত্র যে সক্রিয় নিউরন সর্বাধিক দৃ strongly়ভাবে (চিত্র 3, চিত্র 16)। দ্বিতীয় পদ্ধতিরটি দুর্দান্ত কারণ এটি দেখায় যে নেটওয়ার্কটি কতটা নমনীয় এবং ননলাইনার - এই উচ্চ-স্তরের "ডিটেক্টরগুলি" এই সমস্ত চিত্রের প্রতি সংবেদনশীল, যদিও তারা পিক্সেল স্তরে বিশেষভাবে অনুরূপ দেখাচ্ছে না।


এখানে কিছু অস্পষ্ট কিনা বা আপনার আরও কিছু প্রশ্ন থাকলে তা আমাকে জানান Let


2
সুতরাং একটি নির্দিষ্ট স্তরের প্রতিটি একক নোডের জন্য কেবলমাত্র একটি সংজ্ঞায়িত অ্যালগরিদম আছে এবং ওজনগুলি আউটপুটগুলিকে আলাদা করে তোলে? অথবা আপনি স্তরটির প্রতিটি নোডকে আলাদা হতে প্রোগ্রাম করতে পারেন?
এফএটিবালুন

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

4
আপনি এই উত্তরটিতে যে সময় এবং প্রচেষ্টা করেছেন তার জন্য আপনাকে অন্য কিছু পুরষ্কার (কেবলমাত্র পয়েন্টগুলি বাদ দিয়ে) দেওয়া উচিত!
সমসমার

1
@ জোশুয়াএনফিল্ড আমি মনে করি 1980 এর দশকে যুক্তিটি লোকেরা কীভাবে মস্তিস্ককে কাজ করে ভেবেছিল, এটি সর্বত্র বিভেদযোগ্য ছিল এবং আপনার উল্লেখের মতো মানগুলিও সীমাবদ্ধ ছিল তার অনুরূপ হওয়ার সংমিশ্রণ ছিল। সেই থেকে লোকেরা খুঁজে পেয়েছে যে f(x) = max(x, 0)("সংশোধিত লিনিয়ার ইউনিট") প্রায়শই আরও ভাল কাজ করে, যদিও এর মধ্যে এমন অনেকগুলি বৈশিষ্ট্য নেই।
ডেভিড জে হ্যারিস

2
বাসের উদাহরণ এবং ক্রিয়াকলাপের চেইন এটি পেরেক দিয়েছিল। পাঠ্যপুস্তক কেন এই বর্ণনামূলক হতে পারে তা বুঝতে পারি না।
নিখরচায়

12

আমি স্বজ্ঞাত অপারেশনাল বিবরণে যুক্ত করার চেষ্টা করব ...

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

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

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

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

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


12

আমি আমার দৃষ্টিভঙ্গিটি দুটি পদক্ষেপে বর্ণনা করতে যাচ্ছি: ইনপুট থেকে লুকানো পদক্ষেপ এবং লুকানো থেকে আউটপুট পদক্ষেপ। আমি প্রথমে লুকানো থেকে আউটপুট পদক্ষেপ করব কারণ এটি কম আকর্ষণীয় বলে মনে হচ্ছে (আমার কাছে)।

লুকায়িত টু আউটপুট

লুকানো স্তরের আউটপুট বিভিন্ন জিনিস হতে পারে, তবে আপাতত ধরা যাক যে তারা সিগময়েডাল অ্যাক্টিভেশন ফাংশন থেকে আসে। সুতরাং এগুলি 0 এবং 1 এর মধ্যে মানের হয় এবং অনেকগুলি ইনপুটগুলির জন্য সেগুলি কেবল 0 এবং 1 এর হতে পারে।

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

ইনপুট-টু-লুকায়িত

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

hidden_1 = 10 * (input_1) + 0 * (input_2) + 2 * (input_3)

এর অর্থ হ'ল এর মানটি hidden_1খুব সংবেদনশীল, এর সাথে সংবেদনশীল input_1নয় input_2এবং কেবল সামান্য সংবেদনশীল input_3

সুতরাং আপনি বলতে পারেন যে hidden_1ইনপুটটির একটি বিশেষ দিকটি ক্যাপচার করছে যা আপনি " input_1গুরুত্বপূর্ণ" দিকটি বলতে পারেন।

আউটপুটটি hidden_1সাধারণত কোনও ফাংশনের মাধ্যমে ইনপুটটি পাস করার মাধ্যমে গঠিত হয়, সুতরাং আসুন ধরা যাক আপনি একটি সিগময়েড ফাংশন ব্যবহার করছেন । এই ফাংশনটি 0 এবং 1 এর মধ্যে মান গ্রহণ করে; সুতরাং এটিকে একটি স্যুইচ হিসাবে ভাবুন যা বলে যে input_1এটি গুরুত্বপূর্ণ বা এটি নয়।

সুতরাং যে লুকানো স্তর কি! এটি ইনপুট স্পেসের দিকগুলি বা বৈশিষ্ট্যগুলি বের করে।

এখন ওজনও নেতিবাচক হতে পারে! যার অর্থ হল যে আপনি " input_1গুরুত্বপূর্ণ গুরুত্বপূর্ণ তবে এই গুরুত্বটি কেড়ে input_2নেয় " এর মতো দিকগুলি পেতে পারেন :

hidden_2 = 10 * (input_1) - 10 * (input_2 ) + 0 * (input_3)

বা input_1এবং input_3"ভাগ" গুরুত্ব:

hidden_3 = 5 * (input_1) + 0 * (input_2) + 5 * (input_3)

আরও জ্যামিতি

আপনি যদি কিছু লিনিয়ার বীজগণিত জানেন তবে আপনি নির্দিষ্ট দিক বরাবর প্রকল্পের ক্ষেত্রে জ্যামিতিকভাবে ভাবতে পারেন। উপরের উদাহরণে, আমি input_1দিকটি বরাবর প্রক্ষেপণ করেছি ।

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

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

সারাংশ

লুকানো স্তর ইনপুট স্পেসের বৈশিষ্ট্যগুলি বের করে এবং আউটপুট স্তর তাদের পছন্দসই প্রসঙ্গে অনুবাদ করে। এর চেয়ে আরও অনেক কিছু থাকতে পারে, মাল্টি-লেয়ার নেটওয়ার্কগুলি এবং এর সাথে কী, তবে এটি আমি এখনও অবধি বুঝতে পেরেছি।

সম্পাদনা করুন: এই পৃষ্ঠাটি এর দুর্দান্ত ইন্টারেক্টিভ গ্রাফ সহ আমার দীর্ঘ এবং মজাদার উত্তর উপরের তুলনায় আরও ভাল কাজ করতে পারে: http://neuranetworksandDPlearning.com/chap4.html


1
ওপি-র মতো আমিও নিউরাল নেটওয়ার্কগুলির লুকানো স্তরটি সম্পর্কে কিছুটা বিভ্রান্ত। আপনার উদাহরণে, এনএন অ্যালগরিদম কীভাবে গোপন_1, লুকানো_2 এবং লুকানো 2004 নিউরনের ওজন খুঁজে পায়? এবং যেহেতু লুকানো_1, লুকানো_2, এবং লুকানো 2004 একই ইনপুট ভেরিয়েবলগুলি থেকে উদ্ভূত হয়েছে, তখন কি ওজনগুলি একই দ্রবণে রূপান্তরিত হবে না?
রবার্টএফ

5

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

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

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

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