• গভীর শিক্ষার জন্য আরএনএন পুনরাবৃত্ত নিউরাল নেটওয়ার্ক (তত্ত্ব + ডায়াগ্রাম + পাইথন কোড অংশ)

    ভূমিকা

    প্রথমত, সাধারণ নিউরাল নেটওয়ার্ক

    দ্বিতীয়ত, পুনরাবৃত্ত নিউরাল নেটওয়ার্ক

    ফরোয়ার্ড যোগাযোগ

    2. পিছনে বংশবৃদ্ধির অ্যালগরিদম বিপিটিটি

    ৩. প্রাকৃতিক ভাষা প্রক্রিয়াজাতকরণের জন্য আরএনএন

     4. গ্রেডিয়েন্ট সমস্যা

    ৪.১ গ্রেডিয়েন্ট বিস্ফোরণ

    ৪.২ গ্রেডিয়েন্ট অদৃশ্য হয়ে গেছে:

    5. কেরাস আইএমডিবি সংবেদন বিশ্লেষণ পাইথন কোডের জন্য আরএনএন মডেল তৈরি করে

    ভূমিকা
    কিছুকাল আগে, পরীক্ষাগারে একটি "ডিপ লার্নিং" ছিল This এই নিবন্ধটি আরএনএন এর পুনরাবৃত্ত নিউরাল সংক্ষিপ্তসার সংক্ষিপ্ত করতে বাইবেল এবং ব্লগের পাশাপাশি আমার নিজস্ব বোঝাপড়া এবং অনুশীলনকে একত্রিত করে।

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

    প্রথমত, সাধারণ নিউরাল নেটওয়ার্ক





    আরএনএন প্রবর্তনের আগে আসুন একটি সাধারণ নিউরাল নেটওয়ার্ক কী তা পর্যালোচনা করুন : প্রতিটি উপাদান নোডকে একটি কম্পিউটিং নোড এবং ওজন হিসাবে পাশের দৈর্ঘ্য হিসাবে ব্যবহার করে, একটি সাধারণ স্কোর দিন: এক্স ভেক্টর ইনপুট হিসাবে, আউটপুট y যেমন 0.5, 0.7, এবং বাস্তব পরিস্থিতি y0, 1 কনট্রাস্ট, লোকসান গণনা করুন, ওজন অর্জন করুন, শেখার হারকে গুণ করুন এবং পূর্বের ওজনগুলি আপডেট করুন ডাব্লু 1 এবং ডাব্লু 1 এর মধ্যে সম্পর্ক একটি স্থানচ্যুতি। আপডেটের পরে, 0.2, 0.9 প্রায় এবং এটি সত্য হওয়া অবধি আপডেট অবিরত থাকে। ওয়াই হুবহু একই (সামান্য নিচে গ্রেডিয়েন্ট অর্থ)। উপরেরটি হল সাধারণ নিউরাল নেটওয়ার্কগুলির সাধারণ প্রক্রিয়া process এই বিপি ব্যাক প্রচারের অ্যালগরিদমের বিশদ প্রক্রিয়াটি উল্লেখ করতে পারে:

    https://blog.csdn.net/weixin_39441762/article/details/80446692



    দ্বিতীয়ত, পুনরাবৃত্ত নিউরাল নেটওয়ার্ক
    সুতরাং এখন আমরা একটি জিনিস পাই । সাধারণ নিউরাল নেটওয়ার্কগুলিতে, এক্স 1, এক্স 2, এবং এক্স 3 আলাদাভাবে প্রক্রিয়াজাত করা হয় এবং কোনও অর্ডার সম্পর্ক নেই। অর্থাত্ ইনপুটটি অবস্থান পরিবর্তন করেছে, এবং আউটপুট একই। তথ্যের মধ্যে কিছু বৈশিষ্ট্য রয়েছে কি? সময় সিরিজে প্রতিফলিত হবে, মেটাডাটাকে আরও ভালভাবে প্রকাশ করার জন্য আমরা সময় সিরিজের কিছু সম্পর্ক বের করতে পারি কিনা।
    যদি আমরা পাঠ্য বা বক্তৃতার সমস্যাটি মোকাবেলা করতে চাই তবে আমাদের এটিকে একটি অবিচ্ছিন্ন হিসাবে বিবেচনা করা দরকার Here এখানে আমরা নিউরাল নেটওয়ার্কে একটি প্রতিক্রিয়া লুপ যুক্ত করব (নীচের চিত্রটি দেখুন) lo এই লুপটি আগের বারের আউটপুট দিতে পারে। তথ্যটি পরের বারের জন্য ইনপুট হিসাবে প্রক্রিয়া করা হয়। উদাহরণস্বরূপ, এখানে একটি পাঠ্য রয়েছে, প্রথমে এটি শব্দগুলিতে বিভক্ত করুন এবং তারপরে এই অনুচ্ছেদটিকে এই নিউরাল নেটওয়ার্কে ইনপুট করুন প্রথম বারের জন্য, প্রথম শব্দটি x0 লিখুন, আউটপুট এইচ 0 লিখুন এবং মাঝখানে লুকানো স্তরটিতে একটি হংস রয়েছে। ওভার-ভয়েসড তথ্যগুলি পরের বারে প্রেরণ করা হয় When দ্বিতীয় শব্দ x1টি পাস করার পরে এটি পূর্ববর্তী শব্দের ফলাফলের সাথে একত্রিত হয়ে একটি বিস্তৃত রায় দেবে, এবং তারপরে আউটপুট এক্স 2 এ প্রেরণ করা চালিয়ে যাবে ... এটি ভয়েস বা পাঠ্য প্রেরণ করবে। এই জাতীয় ডেটা ক্রম একটি বিস্তৃত রায় দেওয়ার জন্য একে একে ইনপুট হয় এটি মূলত একটি বিপি নিউরাল নেটওয়ার্ক, তবে তাদের মধ্যে পার্থক্যটি এমন একটি প্রতিক্রিয়া লুপ (শেষ আউটপুটটি + এই ইনপুটটি মনে রাখবেন) সিদ্ধান্ত নিতে সহায়তা করার জন্য।

    আরএনএন হ'ল এক্স 1 শিখার পরে একটি ভয়েস ছেড়ে চলে যেতে হবে এবং নিজের থেকে কিছুটা অবশিষ্টাংশ খুঁজে বের করতে হবে। এক্স 2 এলে তিনি শিখতে একটু x1 অবশেষে আক্রান্ত হন x এক্স 3 এলে তিনি এক্স 1 এবং এক্স 2 এর অবশিষ্টাংশ দ্বারা প্রভাবিত হন ... ফলাফলটি তৈরি করুন। এটি সাধারণ নিউরাল নেটওয়ার্কগুলির থেকে কিছুটা আলাদা।







    ফরোয়ার্ড যোগাযোগ
    যেমন একটি মোটামুটি ধারণা সঙ্গে, আসুন এগিয়ে গণনা পদ্ধতি তাকান।

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



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



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



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

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


    তারপরে, আমরা সময়ের সাথে t = T-1 থেকে t = 1 পর্যন্ত পুনরাবৃত্তি করতে পারি, সময়ের সাথে গ্রেডিয়েন্টকে ব্যাকপ্রোপেট করে নোট করুন যে একই সময়ে দুটি পরবর্তী নোড রয়েছে , সুতরাং এর গ্রেডিয়েন্টটি নিম্নলিখিত সূত্র দ্বারা গণনা করা হচ্ছে




    আমরা প্যারামিটার নোডগুলি সম্পর্কে নিম্নরূপে গ্রেডিয়েন্টটি পেতে পারি:


    এখানে আমরা অনুমান ক্ষতি ফাংশন এল মধ্যে X1, x2, ... XT YT সম্ভাবনা নেতিবাচক লগারিদম দেওয়া হয় লুকানো স্তর অ্যাক্টিভেশন ফাংশন মধ্যে নির্বাচন TANH আউটপুট স্তর অ্যাক্টিভেশন ফাংশন নির্বাচন SoftMax, তারপর backpropagation গ্রেডিয়েন্ট উপরের সমীকরণের ডানদিকের ফলাফল হিসাবে প্রকাশ করা যেতে পারে।

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



    ৩. প্রাকৃতিক ভাষা প্রক্রিয়াজাতকরণের জন্য আরএনএন
    আরএনএন পুনরাবৃত্ত নিউরাল নেটওয়ার্ক বুঝতে প্রত্যেককে সহায়তা করার জন্য এখানে একটি চিত্র দেওয়া হয়েছে:




    এখানে একটি প্রাকৃতিক ভাষার উদাহরণ রয়েছে: "আজ আবহাওয়া খুব ভাল" ve 0,0,0,0,0,0), মাঝখানে লুকানো স্তরে 6 টি নিউরন রয়েছে। তারপরে আমরা দেখতে পাচ্ছি যে "খুব" পরের বার "আবহাওয়া" এর ইনপুট, "খুব" এর লুকানো স্তরটি "খুব" এর ইনপুট ডেটা এবং "আবহাওয়ার" এর লুকানো স্তরের ডেটা দ্বারা প্রভাবিত হয়। এই তিনটি লাল চেনাশোনাতে পিছনের বংশবিস্তারে, আমরা প্যারামিটারগুলি আপডেট করি: 6 * 6 + 6 * 8 + 6 = 90, ওজন শর্ত এবং পক্ষপাতের শর্তাবলী (আউটপুট ওজন এখানে বিবেচনা করা হয় না)। পূর্বে উল্লিখিত হিসাবে, ইউ, ডাব্লু, ভি, বি এবং সি ক্রমানুসারে বিভিন্ন অবস্থানে ভাগ করা হয়েছে , সুতরাং আপনার 4 দ্বারা গুণ করার দরকার নেই।

    -------------------------------------------------- -------------------------------------------------- -----------------------------

    প্রক্রিয়াটি নিম্নরূপ:

    পদক্ষেপ 1 , পাঠ্যের একটি অংশ:

    পদক্ষেপ 2 , চীনা শব্দ বিভাজন:

    পদক্ষেপ 3 , অভিধানিকভাবে:

    বাক্য 1: 1 34 21 98 10 23 9 23

    বাক্য 2: 17 12 21 12 8 10 13 79 31 44 923

    ......

    পদক্ষেপ 4 প্রতিটি বাক্য একটি নির্দিষ্ট দৈর্ঘ্যের সাথে যুক্ত করুন

    বাক্য 1: 1 34 21 98 10 23 9 23 0 0 0 0 0

    বাক্য 2: 17 12 21 12 8 10 13 79 31 44 923 0

    পদক্ষেপ 5 : পাঠ্য শব্দের ক্রমকে একটি শব্দ এম্বেডিং অনুক্রমে রূপান্তর করুন ( পরে ব্যাখ্যা করেছেন)
    বাক্য 1 :,   প্রতিটি কলাম একটি শব্দের ভেক্টরকে উপস্থাপন করে, ভেক্টর শব্দের মাত্রা নিজেই নির্ধারিত হয়; ম্যাট্রিক্স কলামগুলির সংখ্যা সময়_ পদক্ষেপের দৈর্ঘ্যে নির্ধারিত হয়।
    বাক্য ২: 
    ……

    ধাপ Step , ইনপুট হিসাবে আরএনএনকে ফিড দিন

    ধরে নিন যে কোনও আরএনএন-এর সময় ধাপটি এল হিসাবে নির্ধারিত, এবং আরএনএনগুলির একটি রান অবিচ্ছিন্নভাবে পুরো বাক্যটি প্রসেস করে।

    আউটপুট পেতে 7 ধাপ

    চিত্রটির দিকে লক্ষ্য করলে, প্রতিটি সময়_পদ্ধতি বর্তমান সময়ের টির গোপনীয় অবস্থার ফলাফলকে আউটপুট করতে পারে; তবে সর্বশেষ আরএনএন এর আউটপুট o পাওয়া যায় যখন শেষ সময় পদক্ষেপ = এল, এটি সম্পূর্ণ চূড়ান্ত ফলাফল।

    আট ধাপে আরও প্রক্রিয়া করা যেতে পারে

    শ্রেণিবিন্যাস টাস্ক বা রিগ্রেশন ফিটিং টাস্ক অনুযায়ী আমরা আউটপুটটি আরও প্রক্রিয়া করতে পারি। উদাহরণস্বরূপ, শ্রেণিবদ্ধকরণের জন্য ক্রস_এন্ট্রপি এবং সফটম্যাক্সে পাস করুন ...

    -------------------------------------------------- -------------------------------------------------- -----------------------------

    সংক্ষেপে উল্লেখ করা হয়েছে , সাধারণত একটি এমবেডড স্তর যুক্ত করুন

    একটি উত্তপ্ততে এনকোড হওয়া প্রতিটি শব্দ একে অপরের থেকে পৃথক একটি মাত্রা। তবে, প্রতিটি কথার একে অপরের সাথে স্পষ্টতই কোন সম্পর্ক নেই এই সত্যটি আমাদের বাস্তবের সাথে খাপ খায় না। আমরা জানি যে প্রচুর শব্দ সম্পর্কিত

    শব্দার্থবিজ্ঞান: যদিও মেয়ে এবং মহিলা বিভিন্ন বয়সে ব্যবহৃত হয়, তারা মহিলাদের উল্লেখ করে।

    বহুবচন: শব্দ এবং শব্দগুলি কেবল বহুবচনের এবং একবচনগুলির মধ্যে পার্থক্য।

    কাল: উভয়ই ক্রয় করে এক্সপ্রেস "কিনুন", তবে সেগুলি বিভিন্ন সময়ে ঘটে happen

    সুতরাং এক হট প্রতিনিধিত্বমূলক এনকোডিং পদ্ধতি ব্যবহার করে উপরের বৈশিষ্ট্যগুলি বিবেচনায় নেওয়া হয় না।

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



     4. গ্রেডিয়েন্ট সমস্যা
    আরএনএন-এর আনুমানিক প্রক্রিয়াটি বোঝার পরে, এখানে নিউরাল নেটওয়ার্কের একটি ক্লাসিক সমস্যা, গ্রেডিয়েন্ট সমস্যা

    ৪.১ গ্রেডিয়েন্ট বিস্ফোরণ
       কিভাবে গ্রেডিয়েন্ট বিস্ফোরণ আছে তা নির্ধারণ করবেন?

                   প্রশিক্ষণের সময় ধীরে ধীরে বিস্ফোরণগুলির সাথে কিছু সূক্ষ্ম সংকেত দেওয়া হবে, যেমন:

                   মডেলটি প্রশিক্ষণ ডেটা (যেমন কম ক্ষতি হিসাবে) থেকে আপডেটগুলি পেতে পারে না।

                   মডেলটি অস্থির, আপডেট প্রক্রিয়া চলাকালীন ক্ষতির ক্ষেত্রে উল্লেখযোগ্য পরিবর্তন ঘটায়।

                   প্রশিক্ষণ চলাকালীন, মডেল ক্ষতি NAN হয়।



    সমাধান:

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

    ওজন নিয়ন্ত্রণ (ওয়েটস নিয়ন্ত্রণ) আরও সাধারণভাবে l1l1 নিয়মিত, এবং l2l2 নিয়মিত, প্রতিটি গভীরতার কাঠামোতে সংশ্লিষ্ট এপিআইগুলি নিয়মিতকরণ ব্যবহার করতে পারে,

    relu, leakrelu, এলু এবং অন্যান্য অ্যাক্টিভেশন ফাংশন

    দ্রষ্টব্য: প্রকৃতপক্ষে, গভীর স্নায়বিক নেটওয়ার্কগুলিতে, প্রায়শই এমন হয় যে গ্রেডিয়েন্ট অদৃশ্য হয়ে যায়।



    ৪.২ গ্রেডিয়েন্ট অদৃশ্য হয়ে গেছে:
    পূর্ববর্তী থেকে দেখা যাবে যে আরএনএন স্মৃতি আনতে পারে। ধরা যাক, পরবর্তী শব্দটি উত্পন্ন করার একটি উদাহরণ: "এই খাবারটি সত্যই ভাল" -> "খাওয়া", এটি স্পষ্ট যে আমরা প্রথম 5 টি শব্দের পরে পরবর্তী শব্দটি কী তা অনুমান করতে পারি। যখন কেবল একটি ভাল থাকে, তখন এটি সুস্বাদু বা মজাদার বা কী তা জানার উপায় নেই, কেবল স্মৃতি যখন 5 ইতিহাসের সাথে থাকে, তখন এই খাবারটি সত্য, ,,,, খাবারটি জেনে আমি জানি যে আপনার এটি পরে খাওয়া উচিত। এই কারণেই rnn মেমরি নেওয়ার পরে পাঠ্য প্রজন্মের একটি ভাল কাজ করতে পারে।

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




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

    এই সময়ে একটি শক্তিশালী অংশীদার হলেন এলএসটিএম।

    আমি পরবর্তী নিবন্ধে এলএসটিএম প্রক্রিয়াটি ব্যাখ্যা করব।



    5. কেরাস আইএমডিবি সংবেদন বিশ্লেষণ পাইথন কোডের জন্য আরএনএন মডেল তৈরি করে
    আইএমডিবি ডেটা সেটটিতে "ফিল্ম রিভিউ টেক্সট" এর মোট 50,000 আইটেম রয়েছে, যা প্রশিক্ষণের ডেটা এবং 25,000 আইটেমের পরীক্ষার ডেটাগুলিতে বিভক্ত হয় "" ফিল্ম রিভিউ টেক্সট "এর প্রতিটি আইটেমকে" ইতিবাচক মূল্যায়ন "বা" নেতিবাচক মূল্যায়ন "হিসাবে চিহ্নিত করা হয়। আমরা একটি মডেল তৈরি করার আশাবাদী, যা প্রচুর "রিভিউ ফিল্মের পাঠ্য" প্রশিক্ষণের পরে "রিভিউ ফিল্ম" "ইতিবাচক মূল্যায়ন" বা "নেতিবাচক মূল্যায়ন" কিনা তা ভবিষ্যদ্বাণী করতে ব্যবহার করা যেতে পারে।

    #####数据准备
    from keras.datasets import imdb
    from keras.preprocessing import sequence
    from keras.preprocessing.text import Tokenizer

    import re
    re_tag = re.compile(r'<[^>]+>')

    def rm_tags(text):
        return re_tag.sub('', text)

    import os
    def read_files(filetype):
        path = "data/aclImdb/"
        file_list=[]

        positive_path=path + filetype+"/pos/"
        for f in os.listdir(positive_path):
            file_list+=[positive_path+f]
        
        negative_path=path + filetype+"/neg/"
        for f in os.listdir(negative_path):
            file_list+=[negative_path+f]
            
        print('read',filetype, 'files:',len(file_list))
           
        all_labels = ([1] * 12500 + [0] * 12500) 
        
        all_texts  = []
        
        for fi in file_list:
            with open(fi,encoding='utf8') as file_input:
                all_texts += [rm_tags(" ".join(file_input.readlines()))]
                
        return all_labels,all_texts

    y_train,train_text=read_files("train")
    y_test,test_text=read_files("test")
    token = Tokenizer(num_words=3800)
    token.fit_on_texts(train_text)
    x_train_seq = token.texts_to_sequences(train_text)
    x_test_seq  = token.texts_to_sequences(test_text)
    x_train = sequence.pad_sequences(x_train_seq, maxlen=380)
    x_test  = sequence.pad_sequences(x_test_seq,  maxlen=380)

    #####建立模型
    from keras.models import Sequential
    from keras.layers.core import Dense, Dropout, Activation
    from keras.layers.embeddings import Embedding
    from keras.layers.recurrent import SimpleRNN

    model = Sequential()

    model.add(Embedding(output_dim=32,
                        input_dim=3800, 
                        input_length=380))
    model.add(Dropout(0.35))

    model.add(SimpleRNN(units=16))

    model.add(Dense(units=256,activation='relu' ))

    model.add(Dropout(0.35))

    model.add(Dense(units=1,activation='sigmoid' ))

    model.summary()

    #####训练模型
    model.compile(loss='binary_crossentropy', 
                  optimizer='adam', 
                  metrics=['accuracy'])

    train_history =model.fit(x_train, y_train,batch_size=100, 
                             epochs=10,verbose=2,
                             validation_split=0.2)

    import matplotlib.pyplot as plt
    def show_train_history(train_history,train,validation):
        plt.plot(train_history.history[train])
        plt.plot(train_history.history[validation])
        plt.title('Train History')
        plt.ylabel(train)
        plt.xlabel('Epoch')
        plt.legend(['train', 'validation'], loc='upper left')
        plt.show()

    show_train_history(train_history,'acc','val_acc')
    show_train_history(train_history,'loss','val_loss')

    #####评估模型的准确率
    scores = model.evaluate(x_test, y_test, verbose=1)
    scores[1]

    #####预测概率
    probility=model.predict(x_test)
    probility[:10]

    for p in probility[12500:12510]:
        print(p)

    #####预测结果
    predict=model.predict_classes(x_test)

    predict[:10]
    predict.shape
    predict_classes=predict.reshape(25000)
    predict_classes

    #####查看预测结果
    SentimentDict={1:'正面的',0:'负面的'}
    def display_test_Sentiment(i):
        print(test_text[i])
        print('label真实值:',SentimentDict[y_test[i]],
              '预测结果:',SentimentDict[predict_classes[i]])

    display_test_Sentiment(2)
    '''
    注:以下是程序输出(不包括此句)
    As a recreational golfer with some knowledge of the sport's history, I was pleased with Disney's sensitivity to the issues of class in golf in the early twentieth century. The movie depicted well the psychological battles that Harry Vardon fought within himself, from his childhood trauma of being evicted to his own inability to break that glass ceiling that prevents him from being accepted as an equal in English golf society. Likewise, the young Ouimet goes through his own class struggles, being a mere caddie in the eyes of the upper crust Americans who scoff at his attempts to rise above his standing. What I loved best, however, is how this theme of class is manifested in the characters of Ouimet's parents. His father is a working-class drone who sees the value of hard work but is intimidated by the upper class; his mother, however, recognizes her son's talent and desire and encourages him to pursue his dream of competing against those who think he is inferior.Finally, the golf scenes are well photographed. Although the course used in the movie was not the actual site of the historical tournament, the little liberties taken by Disney do not detract from the beauty of the film. There's one little Disney moment at the pool table; otherwise, the viewer does not really think Disney. The ending, as in "Miracle," is not some Disney creation, but one that only human history could have written.
    label真实值: 正面的 预测结果: 正面的
    '''

    display_test_Sentiment(3)
    '''
    注:以下是程序输出(不包括此句)
    I saw this film in a sneak preview, and it is delightful. The cinematography is unusually creative, the acting is good, and the story is fabulous. If this movie does not do well, it won't be because it doesn't deserve to. Before this film, I didn't realize how charming Shia Lebouf could be. He does a marvelous, self-contained, job as the lead. There's something incredibly sweet about him, and it makes the movie even better. The other actors do a good job as well, and the film contains moments of really high suspense, more than one might expect from a movie about golf. Sports movies are a dime a dozen, but this one stands out. This is one I'd recommend to anyone.
    label真实值: 正面的 预测结果: 正面的
    '''
    predict_classes[12500:12510]
    '''
    注:以下是程序输出(不包括此句)
    array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0])
    '''
    display_test_Sentiment(12502)
    '''
    注:以下是程序输出(不包括此句)
    First of all I hate those moronic rappers, who could'nt act if they had a gun pressed against their foreheads. All they do is curse and shoot each other and acting like cliché'e version of gangsters.The movie doesn't take more than five minutes to explain what is going on before we're already at the warehouse There is not a single sympathetic character in this movie, except for the homeless guy, who is also the only one with half a brain.Bill Paxton and William Sadler are both hill billies and Sadlers character is just as much a villain as the gangsters. I did'nt like him right from the start.The movie is filled with pointless violence and Walter Hills specialty: people falling through windows with glass flying everywhere. There is pretty much no plot and it is a big problem when you root for no-one. Everybody dies, except from Paxton and the homeless guy and everybody get what they deserve.The only two black people that can act is the homeless guy and the junkie but they're actors by profession, not annoying ugly brain dead rappers.Stay away from this crap and watch 48 hours 1 and 2 instead. At lest they have characters you care about, a sense of humor and nothing but real actors in the cast.
    label真实值: 负面的 预测结果: 负面的
    '''

    #预测新的影评
    input_text='''
    I can't vote because I have not watched this movie yet. I've been wanting to watch this movie since the time they announced making it which is about 2 years ago (!)
    I was planning to go with the family to see the anticipated movie but my nieces had school exams at the opening time so we all decided to wait for the next weekend. I was utterly shocked to learn yesterday that they pulled the movie from the Kuwaiti theaters "temporarily" so that the outrageous censorship system can remove some unwanted scenes.
    The controversial gay "moment" according to my online research is barely there, so I can't find any logical reason for all the fuss that's been going on. And it was bad enough when fanatics and haters tried (in vain) to kill the movie with low ratings and negative reviews even before it was in the cinemas and I'm pretty sure most of those trolls never got the chance to watch the movie at that time.
    Based on the trailers, I think the movie is very promising and entertaining and you can't simply overlook the tremendous efforts made to bring this beloved tale to life. To knock down hundreds of people's obvious hard work with unprofessional critique and negative reviews just for the sake of hatred is unfathomable. I hope people won't judge a movie before having the experience of watching it in the first place.
    Impatiently waiting for the Kuwaiti cinemas to bring back the movie... 
    '''
    input_seq = token.texts_to_sequences([input_text])
    pad_input_seq  = sequence.pad_sequences(input_seq , maxlen=380)
    predict_result=model.predict_classes(pad_input_seq)
    SentimentDict[predict_result[0][0]]
    '''
    '负面的'
    '''

    def predict_review(input_text):
        input_seq = token.texts_to_sequences([input_text])
        pad_input_seq  = sequence.pad_sequences(input_seq , maxlen=380)
        predict_result=model.predict_classes(pad_input_seq)
        print(SentimentDict[predict_result[0][0]])

    predict_review('''
    As a fan of the original Disney film (Personally I feel it's their masterpiece) I was taken aback to the fact that a new version was in the making. Still excited I had high hopes for the film. Most of was shattered in the first 10 minutes. Campy acting with badly performed singing starts off a long journey holding hands with some of the worst CGI Hollywood have managed to but to screen in ages.
    A film that is over 50% GCI, should focus on making that part believable, unfortunately for this film, it's far from that. It looks like the original film was ripped apart frame by frame and the beautiful hand-painted drawings have been replaced with digital caricatures. Besides CGI that is bad, it's mostly creepy. As the little teacup boy will give me nightmares for several nights to come. Emma Watson plays the same character as she always does, with very little acting effort and very little conviction as Belle. Although I can see why she was cast in the film based on merits, she is far from the right choice for the role. Dan Stevens does alright under as some motion captured dead-eyed Beast, but his performance feels flat as well. Luke Evans makes for a great pompous Gaston, but a character that has little depth doesn't really make for a great viewing experience. Josh Gad is a great comic relief just like the original movie's LeFou. Other than that, none of the cast stands out enough for me to remember them. Human or CHI creature. I was just bored through out the whole experience. And for a project costing $160 000 000, I can see why the PR department is pushing it so hard because they really need to get some cash back on this pile of wet stinky CGI-fur!
    All and all, I might be bias from really loving Disney's first adaptation. That for me marks the high-point of all their work, perfectly combining the skills of their animators along with some CGI in a majestic blend. This film however is more like the bucket you wash off your paintbrush in, it has all the same colors, but muddled with water and to thin to make a captivating story from. The film is quite frankly not worth your time, you would be better off watching the original one more time. 
    ''')
    '''
    注:以下是程序输出(不包括此句)
    1/1 [==============================] - 0s
    正面的
    '''

    predict_review('''
    The original Beauty and the Beast was my favorite cartoon as a kid but it did have major plot holes. Why had no one else ever seen the castle or knew where it was? Didn't anyone miss the people who were cursed? All of that gets an explanation when the enchantress places her curse in the beginning. Why did Belle and her Father move to a small town? Her mother died and the father thought it as best to leave. I love the new songs and added lyrics to the originals. I like the way the cgi beast looks (just the face is CGi). I think Emma Watson is a perfect Belle who is outspoken, fearless, and different. The set design is perfect for the era in France.
    I know a lot of people disagree but I found this remake with all its changes to be more enchanting, beautiful, and complete than the original 1991 movie. To each his own but I think everyone should see it for themselves. 
    ''')
    '''
    注:以下是程序输出(不包括此句)
    1/1 [==============================] - 0s
    正面的
    '''

    table of Contents
    Foreword

    First, ordinary neural networks

    Second, the recurrent neural network

    Forward communication

    2. Back propagation algorithm BPTT

    3. RNN for Natural Language Processing

     4. Gradient problem

    4.1 Gradient explosion

    4.2 Gradient disappears:

    5.Keras builds RNN model for IMDb sentiment analysis Python code

    Foreword
    Some time ago, the laboratory had a "Deep Learning". This article combines various knowledge from the Bible and blog, as well as my own understanding and practice, to summarize the RNN recurrent neural network.

    Recurrent Neural Network (RNN) is a type of neural network used to process sequence data . First of all, we must clarify what sequence data is, and extract Baidu Encyclopedia entries: Time series data refers to data collected at different points in time . This kind of data reflects the state or degree of a certain thing, phenomenon, etc. over time. This is the definition of time series data. Of course, it may not be time here, such as a text sequence, but there is a characteristic of sequence data in general-the latter data is related to the previous data .

    First, ordinary neural networks






    Before introducing RNN, let's review what a normal neural network is : using each element node as a computing node and the side length as a weight, give a simple score: x vector as input, output y such as 0.5, 0.7, and the real situation y0, 1Contrast, calculate the loss, derive the weights, multiply the learning rate, and update the previous weights. The relationship between w1 and w1 'is a displacement. After the update, 0.2, 0.9 is almost, and it continues to update until it is true. Y is exactly the same (a little bit down gradient meaning). The above is the general process of ordinary neural networks. The detailed process of this BP back propagation algorithm can refer to:

    https://blog.csdn.net/weixin_39441762/article/details/80446692



    Second, the recurrent neural network
    So now we find one thing . In ordinary neural networks, x1, x2, and x3 are processed separately, and there is no order relationship. That is to say, the input has changed positions, and the output is the same. Are there some characteristics between the information? Will be reflected in the time series, whether we can extract some relationships of the time series to better express the metadata itself.

    If we want to deal with the problem of text or speech , we need to consider it as a continuous whole. Here we add a feedback loop to the neural network (see the figure below). This loop can output the previous time. The information is processed as input for the next time. For example, there is a text here, first divide it into words, and then input this paragraph into this neural network. For the first time, enter the first word x0, output h0, and there is a goose in the middle hidden layer. The over-voiced information is transmitted to the next time. When the second word x1 is passed in, it will be combined with the result of the previous word to make a comprehensive judgment, and then the output will continue to be transmitted to x2 ... This will send the voice or text Such a sequence of data is input one by one to make a comprehensive judgment. It is essentially a bp neural network, but the difference between them is such a feedback loop (remember the last output + this input) To help make decisions.

    RNN is to leave a voice after x1 learning and leave, leaving a little residual trace of himself. When x2 comes, he is affected by a little x1 remnant to learn. When x3 comes, he is affected by x1 and x2 remnants ... make the result. It is a little different from ordinary neural networks.







    Forward communication
    With such a rough idea, let's look at the forward calculation method.

    RNN and HMM think a little bit in time (that is, they are affected by previous data). One more process of self-circulation (one more memory storage point) look at this propagation process. In the following st equation, the first term is (the amount of input) input, and the second term is the amount of memory of the previous hidden layer. F is a representative of various equations. The tanh function is usually used. The ot equation is the output of the memory at the moment. .





    If the time step T = 3 means that there are 3 words in a sentence, and they enter the network in sequence as input, it is equivalent to stretching a neuron into 3, and s is the memory we said because it takes the previous All the information is recorded.



    2. Back propagation algorithm BPTT
    After expanding the RNN, the forward propagation is just calculated once in the order of time , and the back propagation is just to pass back the accumulated losses from the last time , which is essentially similar to ordinary neural network training.

    That is, through the round-by-round iteration of the gradient descent method, appropriate RNN model parameters U, W, V, b, and c are obtained. Since we are back propagation based on time, the back propagation of RNN is sometimes called BPTT (back-propagation through time). Of course, the BPTT here is also very different from the ordinary neural network, that is, all U, W, V, b, c here are shared at various positions in the sequence , and we update the same parameters during back propagation .



    As shown in the figure, the nodes of the calculation graph include U, V, W, b, and c, and the sequence of nodes with t as the index. For each node N, we need to calculate the gradient recursively based on the gradient of the nodes after N.

    We start at the end of the sequence and do the calculations in reverse. At the last time step T, it is only  used as a subsequent node, so this gradient is very simple



    Then, we can reverse iterate from time t = T-1 to t = 1, backpropagating the gradient through time, note that there are two subsequent nodes at the same time , so its gradient is calculated by the following formula





    We can get the gradient about the parameter nodes as follows:



    Here we assume that the loss function L is the negative log-likelihood of yt after given x1, x2, ... xt. Select tanh in the activation function of the hidden layer and softmax in the activation function of the output layer . Then the gradient during backpropagation The result of can be expressed as the far right of the above equation.

    Note: Each time step can output the hidden state s of the current timing t and the loss at the current moment . But overall RNN output o is the last time step acquisition, which is the complete end result. So when backpropagating, the loss function we use is the loss at the last time step to backpropagate.



    3. RNN for Natural Language Processing
    Here is a picture to help everyone understand the RNN recurrent neural network:





    Here is a natural language example: "The weather is very good today". After generating the word vector, it is input into the RNN in the order of the arrow time in the figure. Suppose that the dimension of this word vector is 8 dimensions. 0,0,0,0,0,0), there are 6 neurons in the middle hidden layer. Then we can see that "very" is the next time input of "weather", the hidden layer of "very" is affected by the input data of "very", and the hidden layer data of "weather". In the back propagation in these three red circles, we update the parameters: 6 * 6 + 6 * 8 + 6 = 90, that is, weight terms and bias terms (the output weights are not considered here). As mentioned earlier, U, W, V, b, and c are shared at various positions in the sequence , so you don't need to multiply by 4.

    -------------------------------------------------- -------------------------------------------------- -----------------------------

    The process is as follows:

    Step 1 , a piece of text:

    Step 2 , Chinese word segmentation:

    Step 3 , lexicographically:

    sentence1: 1 34 21 98 10 23 9 23

    sentence2: 17 12 21 12 8 10 13 79 31 44 923

    ...

    Step 4 Add each sentence to a fixed length

    sentence1: 1 34 21 98 10 23 9 23 0 0 0 0 0

    sentence2: 17 12 21 12 8 10 13 79 31 44 923 0

    Step 5 : Convert the text word sequence into a word embedding sequence ( explained later)

    sentence1:,   each column represents a word vector, the dimension of the word vector is determined by itself; the number of matrix columns is fixed to time_step length.
    sentence2: 
    ……

    Step 6 , feed RNN as input

    Assume that the time step of an RNN is determined to be L, and a run of RNNs continuously processes the entire sentence.

    Step 7 to get the output

    Looking at the figure, each time_step can output the hidden state s of the current timing t; but the output o of the overall RNN is obtained when the last time step = L, which is the complete final result.

    Step 8 can be further processed

    We can further process the output according to the classification task or the regression fitting task. For example, pass to cross_entropy & softmax for classification ...

    -------------------------------------------------- -------------------------------------------------- -----------------------------

    Briefly mentioned , usually add an embedded layer

    Each word encoded in one hot is a dimension independent of each other. However, the fact that each word has nothing to do with each other obviously does not fit our reality. We know that a lot of words are related

    Semantics: Although girl and woman are used at different ages, they refer to women.

    Plural: Word and words are just the difference between plural and singular.

    Tense: Both buy and bought express "buy," but they happen at different times.

    So using the one hot representation encoding method, the above features are not taken into account.

     EmbeddingLayer embedding layer has the effect of reducing the dimension. The vector input to the network is often a one-hot vector of very high dimensions, such as 8000 dimensions, only one of which has an index of 1 and the rest of the positions are 0, very sparse vectors (high-dimensional sparse vectors). After Embedding, find a mapping or function, and generate an expression in a new space, that is, the word is mapped to a low-dimensional continuous vector. It can be reduced to a space of 100 dimensions for operations (low-dimensional continuous vectors). One characteristic is that the distance between the word vectors "woman" and "man" is approximately equal to the distance between "aunt" and "uncle".



     4. Gradient problem
    After understanding the approximate process of RNN, here is a classic problem of neural network, gradient problem

    4.1 Gradient explosion
       How to determine if there is a gradient explosion?

                   Gradient explosions during training will be accompanied by some subtle signals, such as:

                   The model cannot get updates from the training data (such as low loss).

                   The model is unstable, causing significant changes in the loss during the update process.

                   During training, the model loss becomes NaN.



    solution:

    The gradient shearing scheme is mainly proposed for gradient explosions. The idea is to set a gradient shearing threshold and then update the gradient. If the gradient exceeds this threshold, it is forced to be limited to this range. This prevents gradient explosions.

    Weight regularization (weithts regularization) is more common is l1l1 regular, and l2l2 regular, there are corresponding APIs in each depth framework can use regularization,

    relu, leakrelu, elu and other activation functions

    Note: In fact, in deep neural networks, it is often that the gradient disappears.



    4.2 Gradient disappears:
    It can be seen from the foregoing that RNN can bring memory. Suppose, an example of generating the next word: "This meal is really good"-> "eat", it is clear that we can guess what the next word is as long as the first 5 words. When there is only one good, there is no way to know whether it is delicious or fun or what, only when the memory is accompanied by 5 history, this meal is true ,,,, knowing the meal, I know that you should eat it later. This is why rnn can do a good job in text generation after taking the memory.

    However, there is another problem here : if the length is long enough, you can know how much the previous information is, and only long enough and long enough to store enough memory, such as someone chatting with you for a whole day, in the morning I asked you a joke, and asked you in the afternoon, what did Pangolin say? Can you answer, or ask a few days later, obviously you cannot answer. If this rnn can't remember the s a few days ago, then this processing power is actually zero, because it still doesn't know what your contextual premise is. In other words, like bp , it has a problem of disappearing gradients . It is difficult to learn long-term dependence. As the propagation and time pass by, it continuously decays. The first time it is introduced, it has a greater impact on decision making. When it reaches the second one, it becomes smaller, and the third one becomes smaller. After 5 to 6 transmissions, it has little effect on decision-making.





    When calculating the gradient, there are relatively small values ​​in the matrix. Multiplying multiple matrices will cause the gradient value to decrease at an exponential speed and eventually disappear completely after a few steps. Far away moments have a gradient value of 0. The states at these moments are not helpful for the learning process, and you cannot learn long-range dependence. The vanishing gradient problem appears not only in RNNs, but also in deep forward neural networks.

    A strong partner at this time is LSTM.

    I will explain the process of LSTM in the next article.



    5.Keras builds RNN model for IMDb sentiment analysis Python code
    The IMDb data set has a total of 50,000 items of "film review text", which are divided into training data and test data of 25,000 items each. Each item of "film review text" is marked as "positive evaluation" or "negative evaluation". We hope to build a model, which can be used to predict whether the “review film” is “positive evaluation” or “negative evaluation” after a lot of “review film text” training.

    #####数据准备
    from keras.datasets import imdb
    from keras.preprocessing import sequence
    from keras.preprocessing.text import Tokenizer

    import re
    re_tag = re.compile(r'<[^>]+>')

    def rm_tags(text):
        return re_tag.sub('', text)

    import os
    def read_files(filetype):
        path = "data/aclImdb/"
        file_list=[]

        positive_path=path + filetype+"/pos/"
        for f in os.listdir(positive_path):
            file_list+=[positive_path+f]
        
        negative_path=path + filetype+"/neg/"
        for f in os.listdir(negative_path):
            file_list+=[negative_path+f]
            
        print('read',filetype, 'files:',len(file_list))
           
        all_labels = ([1] * 12500 + [0] * 12500) 
        
        all_texts  = []
        
        for fi in file_list:
            with open(fi,encoding='utf8') as file_input:
                all_texts += [rm_tags(" ".join(file_input.readlines()))]
                
        return all_labels,all_texts

    y_train,train_text=read_files("train")
    y_test,test_text=read_files("test")
    token = Tokenizer(num_words=3800)
    token.fit_on_texts(train_text)
    x_train_seq = token.texts_to_sequences(train_text)
    x_test_seq  = token.texts_to_sequences(test_text)
    x_train = sequence.pad_sequences(x_train_seq, maxlen=380)
    x_test  = sequence.pad_sequences(x_test_seq,  maxlen=380)

    #####建立模型
    from keras.models import Sequential
    from keras.layers.core import Dense, Dropout, Activation
    from keras.layers.embeddings import Embedding
    from keras.layers.recurrent import SimpleRNN

    model = Sequential()

    model.add(Embedding(output_dim=32,
                        input_dim=3800, 
                        input_length=380))
    model.add(Dropout(0.35))

    model.add(SimpleRNN(units=16))

    model.add(Dense(units=256,activation='relu' ))

    model.add(Dropout(0.35))

    model.add(Dense(units=1,activation='sigmoid' ))

    model.summary()

    #####训练模型
    model.compile(loss='binary_crossentropy', 
                  optimizer='adam', 
                  metrics=['accuracy'])

    train_history =model.fit(x_train, y_train,batch_size=100, 
                             epochs=10,verbose=2,
                             validation_split=0.2)

    import matplotlib.pyplot as plt
    def show_train_history(train_history,train,validation):
        plt.plot(train_history.history[train])
        plt.plot(train_history.history[validation])
        plt.title('Train History')
        plt.ylabel(train)
        plt.xlabel('Epoch')
        plt.legend(['train', 'validation'], loc='upper left')
        plt.show()

    show_train_history(train_history,'acc','val_acc')
    show_train_history(train_history,'loss','val_loss')

    #####评估模型的准确率
    scores = model.evaluate(x_test, y_test, verbose=1)
    scores[1]

    #####预测概率
    probility=model.predict(x_test)
    probility[:10]

    for p in probility[12500:12510]:
        print(p)

    #####预测结果
    predict=model.predict_classes(x_test)

    predict[:10]
    predict.shape
    predict_classes=predict.reshape(25000)
    predict_classes

    #####查看预测结果
    SentimentDict={1:'正面的',0:'负面的'}
    def display_test_Sentiment(i):
        print(test_text[i])
        print('label真实值:',SentimentDict[y_test[i]],
              '预测结果:',SentimentDict[predict_classes[i]])

    display_test_Sentiment(2)
    '''
    注:以下是程序输出(不包括此句)
    As a recreational golfer with some knowledge of the sport's history, I was pleased with Disney's sensitivity to the issues of class in golf in the early twentieth century. The movie depicted well the psychological battles that Harry Vardon fought within himself, from his childhood trauma of being evicted to his own inability to break that glass ceiling that prevents him from being accepted as an equal in English golf society. Likewise, the young Ouimet goes through his own class struggles, being a mere caddie in the eyes of the upper crust Americans who scoff at his attempts to rise above his standing. What I loved best, however, is how this theme of class is manifested in the characters of Ouimet's parents. His father is a working-class drone who sees the value of hard work but is intimidated by the upper class; his mother, however, recognizes her son's talent and desire and encourages him to pursue his dream of competing against those who think he is inferior.Finally, the golf scenes are well photographed. Although the course used in the movie was not the actual site of the historical tournament, the little liberties taken by Disney do not detract from the beauty of the film. There's one little Disney moment at the pool table; otherwise, the viewer does not really think Disney. The ending, as in "Miracle," is not some Disney creation, but one that only human history could have written.
    label真实值: 正面的 预测结果: 正面的
    '''

    display_test_Sentiment(3)
    '''
    注:以下是程序输出(不包括此句)
    I saw this film in a sneak preview, and it is delightful. The cinematography is unusually creative, the acting is good, and the story is fabulous. If this movie does not do well, it won't be because it doesn't deserve to. Before this film, I didn't realize how charming Shia Lebouf could be. He does a marvelous, self-contained, job as the lead. There's something incredibly sweet about him, and it makes the movie even better. The other actors do a good job as well, and the film contains moments of really high suspense, more than one might expect from a movie about golf. Sports movies are a dime a dozen, but this one stands out. This is one I'd recommend to anyone.
    label真实值: 正面的 预测结果: 正面的
    '''
    predict_classes[12500:12510]
    '''
    注:以下是程序输出(不包括此句)
    array([0, 0, 0, 0, 1, 0, 0, 0, 0, 0])
    '''
    display_test_Sentiment(12502)
    '''
    注:以下是程序输出(不包括此句)
    First of all I hate those moronic rappers, who could'nt act if they had a gun pressed against their foreheads. All they do is curse and shoot each other and acting like cliché'e version of gangsters.The movie doesn't take more than five minutes to explain what is going on before we're already at the warehouse There is not a single sympathetic character in this movie, except for the homeless guy, who is also the only one with half a brain.Bill Paxton and William Sadler are both hill billies and Sadlers character is just as much a villain as the gangsters. I did'nt like him right from the start.The movie is filled with pointless violence and Walter Hills specialty: people falling through windows with glass flying everywhere. There is pretty much no plot and it is a big problem when you root for no-one. Everybody dies, except from Paxton and the homeless guy and everybody get what they deserve.The only two black people that can act is the homeless guy and the junkie but they're actors by profession, not annoying ugly brain dead rappers.Stay away from this crap and watch 48 hours 1 and 2 instead. At lest they have characters you care about, a sense of humor and nothing but real actors in the cast.
    label真实值: 负面的 预测结果: 负面的
    '''

    #预测新的影评
    input_text='''
    I can't vote because I have not watched this movie yet. I've been wanting to watch this movie since the time they announced making it which is about 2 years ago (!)
    I was planning to go with the family to see the anticipated movie but my nieces had school exams at the opening time so we all decided to wait for the next weekend. I was utterly shocked to learn yesterday that they pulled the movie from the Kuwaiti theaters "temporarily" so that the outrageous censorship system can remove some unwanted scenes.
    The controversial gay "moment" according to my online research is barely there, so I can't find any logical reason for all the fuss that's been going on. And it was bad enough when fanatics and haters tried (in vain) to kill the movie with low ratings and negative reviews even before it was in the cinemas and I'm pretty sure most of those trolls never got the chance to watch the movie at that time.
    Based on the trailers, I think the movie is very promising and entertaining and you can't simply overlook the tremendous efforts made to bring this beloved tale to life. To knock down hundreds of people's obvious hard work with unprofessional critique and negative reviews just for the sake of hatred is unfathomable. I hope people won't judge a movie before having the experience of watching it in the first place.
    Impatiently waiting for the Kuwaiti cinemas to bring back the movie... 
    '''
    input_seq = token.texts_to_sequences([input_text])
    pad_input_seq  = sequence.pad_sequences(input_seq , maxlen=380)
    predict_result=model.predict_classes(pad_input_seq)
    SentimentDict[predict_result[0][0]]
    '''
    '负面的'
    '''

    def predict_review(input_text):
        input_seq = token.texts_to_sequences([input_text])
        pad_input_seq  = sequence.pad_sequences(input_seq , maxlen=380)
        predict_result=model.predict_classes(pad_input_seq)
        print(SentimentDict[predict_result[0][0]])

    predict_review('''
    As a fan of the original Disney film (Personally I feel it's their masterpiece) I was taken aback to the fact that a new version was in the making. Still excited I had high hopes for the film. Most of was shattered in the first 10 minutes. Campy acting with badly performed singing starts off a long journey holding hands with some of the worst CGI Hollywood have managed to but to screen in ages.
    A film that is over 50% GCI, should focus on making that part believable, unfortunately for this film, it's far from that. It looks like the original film was ripped apart frame by frame and the beautiful hand-painted drawings have been replaced with digital caricatures. Besides CGI that is bad, it's mostly creepy. As the little teacup boy will give me nightmares for several nights to come. Emma Watson plays the same character as she always does, with very little acting effort and very little conviction as Belle. Although I can see why she was cast in the film based on merits, she is far from the right choice for the role. Dan Stevens does alright under as some motion captured dead-eyed Beast, but his performance feels flat as well. Luke Evans makes for a great pompous Gaston, but a character that has little depth doesn't really make for a great viewing experience. Josh Gad is a great comic relief just like the original movie's LeFou. Other than that, none of the cast stands out enough for me to remember them. Human or CHI creature. I was just bored through out the whole experience. And for a project costing $160 000 000, I can see why the PR department is pushing it so hard because they really need to get some cash back on this pile of wet stinky CGI-fur!
    All and all, I might be bias from really loving Disney's first adaptation. That for me marks the high-point of all their work, perfectly combining the skills of their animators along with some CGI in a majestic blend. This film however is more like the bucket you wash off your paintbrush in, it has all the same colors, but muddled with water and to thin to make a captivating story from. The film is quite frankly not worth your time, you would be better off watching the original one more time. 
    ''')
    '''
    注:以下是程序输出(不包括此句)
    1/1 [==============================] - 0s
    正面的
    '''

    predict_review('''
    The original Beauty and the Beast was my favorite cartoon as a kid but it did have major plot holes. Why had no one else ever seen the castle or knew where it was? Didn't anyone miss the people who were cursed? All of that gets an explanation when the enchantress places her curse in the beginning. Why did Belle and her Father move to a small town? Her mother died and the father thought it as best to leave. I love the new songs and added lyrics to the originals. I like the way the cgi beast looks (just the face is CGi). I think Emma Watson is a perfect Belle who is outspoken, fearless, and different. The set design is perfect for the era in France.
    I know a lot of people disagree but I found this remake with all its changes to be more enchanting, beautiful, and complete than the original 1991 movie. To each his own but I think everyone should see it for themselves. 
    ''')
    '''
    注:以下是程序输出(不包括此句)
    1/1 [==============================] - 0s
    正面的
    '''


  • 0 comments:

    Post a Comment

    New Research

    Attention Mechanism Based Multi Feature Fusion Forest for Hyperspectral Image Classification.

    CBS-GAN: A Band Selection Based Generative Adversarial Net for Hyperspectral Sample Generation.

    Multi-feature Fusion based Deep Forest for Hyperspectral Image Classification.

    ADDRESS

    388 Lumo Rd, Hongshan, Wuhan, Hubei, China

    EMAIL

    contact-m.zamanb@yahoo.com
    mostofa.zaman@cug.edu.cn

    TELEPHONE

    #
    #

    MOBILE

    +8615527370302,
    +8807171546477