2017-02-28 11 views
5

मुझे पता है कि हानि की गणना करने के लिए tensorflow में नकारात्मक नमूनाकरण के बारे में दो कार्य हैं (sampled_softmax_loss और nce_loss)। इन दो कार्यों के पैरामीटर समान हैं, लेकिन मैं वास्तव में जानना चाहता हूं कि दोनों के बीच क्या अंतर है?tensorflow में sampled_softmax_loss और nce_loss के बीच क्या अंतर है?

उत्तर

1

नमूनाकृत सॉफ्टमैक्स आपके आउटपुट में सभी नमूनों पर सामान्यीकृत करने की कोशिश करता है। एक गैर-सामान्य वितरण (आपके लेबल पर लॉगरिदमिक) होने के कारण यह एक इष्टतम हानि कार्य नहीं है। ध्यान दें कि यद्यपि उनके पास समान पैरामीटर हैं, वैसे ही आप फ़ंक्शन का उपयोग करते हैं। यहाँ प्रलेखन पर एक नज़र डालें: https://github.com/calebchoo/Tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard4/tf.nn.nce_loss.md और इस लाइन पढ़ें:

डिफ़ॉल्ट रूप से यह एक लॉग-वर्दी का उपयोग करता है (Zipfian) नमूने के लिए वितरण, इसलिए अपने लेबल की बारंबारता कम अच्छे परिणाम प्राप्त करने के लिए क्रम में सॉर्ट किया जाना चाहिए । अधिक जानकारी के लिए, log_uniform_candidate_sampler देखें। http://papers.nips.cc/paper/5165-learning-word-embeddings-efficiently-with-noise-contrastive-estimation.pdf

आशा इस मदद करता है:

इस पत्र पर एक नज़र, जहां वे स्पष्टीकरण दें कि वे शब्द embeddings के लिए इसका इस्तेमाल करते हैं लो!

+0

पहले लिंक टूट गया है, का उपयोग करें: https://github.com/calebchoo/Tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard4/tf.nn.nce_loss.md –

+0

धन्यवाद! लिंक फिक्स्ड – rmeertens

2

नमूना सॉफ्टमैक्स दिए गए नंबर का नमूना चुनने और सॉफ्टमैक्स हानि प्राप्त करने का प्रयास करने के बारे में है। यहां मुख्य उद्देश्य हमारे सच्चे सॉफ्टमैक्स के बराबर नमूनाकृत सॉफ्टमैक्स का परिणाम बनाना है। इसलिए एल्गोरिदम मूल रूप से दिए गए वितरण से उन नमूनों को चुनने पर बहुत ध्यान केंद्रित करता है। दूसरी ओर एनसीई हानि शोर के नमूने का चयन करने और सच्चे सॉफ्टमैक्स की नकल करने की कोशिश करने के लिए अधिक है। इसमें केवल एक सच्ची कक्षा और के शोर वर्ग होंगे।

संबंधित मुद्दे