রেডু বনাম সিগময়েড বনাম সফটম্যাক্স লুকানো স্তর নিউরন হিসাবে


22

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

  • Relu
  • সিগমা
  • সফটম্যাক্স (ভাল, সাধারণত সফটম্যাক্স সর্বশেষ স্তরে ব্যবহৃত হয় ..)

রেলু সেরা ট্রেনের নির্ভুলতা এবং বৈধতা যথার্থতা দেয়। আমি কীভাবে এটি ব্যাখ্যা করব তা নিশ্চিত নই।

আমরা জানি যে রেলুর খুব ভাল গুণ রয়েছে যেমন স্পারসিটি, যেমন নন-গ্রেডিয়েন্ট-বিলুপ্তকরণ ইত্যাদি, তবে

প্রশ্ন: সিগময়েড / সফটম্যাক্স নিউরনের চেয়ে সাধারণভাবে কি রেলু নিউরন ভাল? আমাদের প্রায় সবসময় এনএন (বা এমনকি সিএনএন) এর মধ্যে রেলু নিউরনগুলি ব্যবহার করা উচিত? আমি ভেবেছিলাম আরও জটিল নিউরন আরও ভাল ফলাফলের পরিচয় দেবে, যদি আমরা ওভারফিটিংয়ের বিষয়ে চিন্তা করি তবে কমপক্ষে ট্রেনের নির্ভুলতা।

ধন্যবাদ পিএস: কোডটি মূলত "উদাসিটি-মেশিন লার্নিং-এসাইনমেন্ট 2" এর, যা সাধারণ 1-লুকানো-স্তর-এনএন ব্যবহার করে নোট এমএনআইএসটির স্বীকৃতি।

batch_size = 128
graph = tf.Graph()
with graph.as_default():
  # Input data. 
  tf_train_dataset = tf.placeholder(tf.float32, shape=(batch_size, image_size * image_size))
  tf_train_labels = tf.placeholder(tf.float32, shape=(batch_size, num_labels))
  tf_valid_dataset = tf.constant(valid_dataset)
  tf_test_dataset = tf.constant(test_dataset)

  # hidden layer
  hidden_nodes = 1024
  hidden_weights = tf.Variable( tf.truncated_normal([image_size * image_size, hidden_nodes]) )
  hidden_biases = tf.Variable( tf.zeros([hidden_nodes]))
  hidden_layer = **tf.nn.relu**( tf.matmul( tf_train_dataset, hidden_weights) + hidden_biases)

  # Variables.
  weights = tf.Variable( tf.truncated_normal([hidden_nodes, num_labels])) 
  biases = tf.Variable(tf.zeros([num_labels]))

  # Training computation.
  logits = tf.matmul(hidden_layer, weights) + biases
  loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(logits, tf_train_labels) )

  # Optimizer.
  optimizer = tf.train.GradientDescentOptimizer(0.5).minimize(loss)

  # Predictions for the training, validation, and test data.
  train_prediction = tf.nn.softmax(logits)
  valid_relu = **tf.nn.relu**(  tf.matmul(tf_valid_dataset, hidden_weights) + hidden_biases)
  valid_prediction = tf.nn.softmax( tf.matmul(valid_relu, weights) + biases) 

  test_relu = **tf.nn.relu**( tf.matmul( tf_test_dataset, hidden_weights) + hidden_biases)
  test_prediction = tf.nn.softmax(tf.matmul(test_relu, weights) + biases)

উত্তর:


12

@ ভাগ্যেশ_ভিকানি ছাড়াও:

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

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

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

আপনার যদি একটি সাধারণ এনএন থাকে (তবে এটিই প্রশ্ন), রেলু আপনার প্রথম পছন্দ


5

রেলুর নিজস্ব উপকারিতা এবং কনস রয়েছে:

পেশাদাররা:
1. নেই সুসিক্ত না (+ + ve মধ্যে অঞ্চল)
2. গণনা, এটা খুবই কার্যকরী
, 3 সাধারনত relu নিউরোন সঙ্গে মডেল অন্যান্য অ্যাক্টিভেশন ফাংশন সঙ্গে নিউরোন চেয়ে অনেক দ্রুত মিলিত হিসাবে বর্ণনা এখানে

কনস:
১. তাদের সাথে ডিল করার ক্ষেত্রে একটি বিষয় হ'ল তারা মারা যায়, অর্থাৎ মৃত রেলাস। কারণ যদি কোনও রিলু নিউরনগুলির সক্রিয়করণ শূন্য হয়ে যায় তবে এর গ্রেডিয়েন্টগুলি ব্যাক-প্রসারণে শূন্যে ক্লিপ হবে। যদি আমরা ওজন সূচনা এবং টিউনিং শেখার হারের বিষয়ে খুব যত্নশীল হই তবে এটি এড়ানো যায় This

আরও তথ্যের জন্য: CS231n এর এই বক্তৃতা -5 দেখুন Check


এটি লক্ষণীয় যে ELU ইউনিটগুলি অমরত্বের জন্য গণ্য দক্ষতা - মরার প্রতিরোধ ক্ষমতা trade arxiv.org/abs/1511.07289
সাইকোরাক্স

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

1
সেখানে মূলত কোন কারণে তুমি আছে সেই বিশেষ প্যারামিটার উপর সুর।
সাইকোরাক্স মনিকাকে

4

http://cs231n.github.io/neural-networks-1/

Sigmoids

সিগময়েডগুলি গ্রেডিয়েন্টগুলি পরিপূর্ণ করে এবং হত্যা করে। সিগময়েড আউটপুটগুলি শূন্য-কেন্দ্রিক নয়।

TANH

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

ReLU

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


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