نوشته قبلی نوشته بعدی طبقه بندی خودکار خودکار با استفاده از یادگیری عمیق (قسمت ۲)

طبقه بندی خودکار خودکار با استفاده از یادگیری عمیق (قسمت ۲)

طبقه بندی خودکار خودکار با استفاده از یادگیری عمیق (قسمت ۲) منتشر شده در آوریل 3, 2020ارسال دیدگاه

علاقه مند به حوزه Seo & Sem

برنامه اصلی من این بود که این موضوع را بپوشانم: "چگونه می توان یک بوت ایجاد کرد تا کارهای خود را بدون استفاده از Python و BigQuery به طور خودکار انجام دهد". من تغییرات جزئی در دوره ایجاد کردم ، اما امیدوارم که هدف اصلی یکسان باقی بماند!

الهام بخش این مقاله از این صدای جیر جیر از JR Oakes گرفته شده است . 🙂

تبلیغات
ادامه خواندن زیر

از آنجا که Uber نسخه به روز شده Ludwig را منتشر کرد و گوگل همچنین توانایی اجرای مدلهای Tensorflow را در BigQuery اعلام کرد ، من فکر کردم زمان بندی بهتر نمی تواند باشد.

در این مقاله ، ما مسئله طبقه بندی قصد را که قبلاً به آن پرداختم ، دوباره مرور خواهیم کرد ، اما رمزگذار اصلی خود را برای حالت هنری یک جایگزین خواهیم کرد: BERT ، که مخفف عبارت های Bidirectional Encoder Encumer از Transformers است .

این تغییر کوچک به ما کمک می کند تا دقت مدل را از دقت تست ترکیبی ۰٫۶۶ به ۰٫۸۹ در حالی که از همان مجموعه داده استفاده می کنیم و هیچ کدگذاری سفارشی نداریم!

تبلیغات
ادامه خواندن زیر

این برنامه عمل ما است:

  • ما مدل طبقه بندی قصد را که در قسمت اول ساخته ایم بازسازی خواهیم کرد ، اما داده های پیش آموزش را با استفاده از یک رمزگذار BERT اهرم خواهیم کرد.
  • ما دوباره آن را در برابر سؤالی که از کنسول جستجوی Google کشیده ایم ، آزمایش خواهیم کرد.
  • ما داده های نمایش داده شده و پیش بینی قصد خود را در BigQuery بارگذاری خواهیم کرد.
  • ما BigQuery را به Google Data Studio متصل خواهیم کرد تا سوالات را به قصد آنها گروه بندی کنیم و بینش عملی را که می توانیم برای اولویت بندی تلاش های تولید محتوا استفاده کنیم ، استخراج می کنیم.
  • ما به مفاهیم اساسی جدیدی خواهیم رسید که به BERT کمک می کند عملکرد بهتری را نسبت به مدل قبلی خود داشته باشد.
تبلیغات
ادامه خواندن زیر

راه اندازی Google Colaboratory

مانند قسمت اول ، ما Ludwig را از درون Google Colaboratory اجرا خواهیم کرد تا بتواند از زمان GPU رایگان آنها استفاده کند.

ابتدا این کد را اجرا کنید تا نسخه Tensorflow نصب شده را بررسی کنید.

 وارد کردن tensorflow به عنوان tf؛ چاپ (tf .__ نسخه__) 

بیایید مطمئن شوید که نوت بوک ما از نسخه صحیح مورد انتظار Ludwig استفاده می کند و همچنین از زمان اجرا GPU پشتیبانی می کند.

من ۱٫۱۴٫۰ را دریافت می کنم که فوق العاده است زیرا لودویگ حداقل به ۱٫۱۴٫۰ نیاز دارد

در زیر مورد منوی Runtime ، Python 3 و GPU را انتخاب کنید.

با تایپ کردن می توانید GPU را تأیید کنید:

 ! nvidia-smi 

در زمان نوشتن ، قبل از نصب جدیدترین لودویگ (۰٫۲) باید تعدادی از کتابخانه های سیستم را نصب کنید. من خطاهایی کردم که بعداً برطرف شدند .

 apt-get install libgmp-dev libmpfr-dev libmpc-dev 

وقتی نصب برای من شکست خورد ، من راه حل این پاسخ StackOverflow را پیدا کردم ، که حتی مورد قبول هم نبود!

تبلیغات
ادامه خواندن زیر
 pip نصب ludwig 

شما باید دریافت کنید:

 gmpy-1.17 ludwig-0.2 با موفقیت نصب شد 

پایگاه داده را برای آموزش آماده کنید

ما قصد داریم از همان مجموعه بندی طبقه بندی سؤال استفاده کنیم که در مقاله اول از آن استفاده کردیم.

بعد از ورود به Kaggle و بارگیری داده ، می توانید از کد استفاده کنید تا آن را به یک dataframe در Colab بارگیری کنید.

پیکربندی رمزگذار BERT

به جای استفاده از رمزگذار موازی CNN که در قسمت اول از آن استفاده کردیم ، از رمزگذار BERT که اخیراً به لودویگ اضافه شده است ، استفاده خواهیم کرد.

این رمزگذار داده های از قبل آموزش دیده را قادر می سازد تا ضمن نیاز به داده های آموزش بسیار کمتری ، بهتر از رمزگذار قبلی ما را انجام دهند. من توضیح می دهم که چگونه در پایان این مقاله به صورت ساده بیان شده است.

بیایید ابتدا یک مدل زبان از پیش آماده شده را بارگیری کنیم . ما فایلها را برای مدل BERT-Base، Uncased بارگیری خواهیم کرد.

تبلیغات
ادامه خواندن زیر

من ابتدا مدل های بزرگتر را امتحان کردم ، اما به دلیل نیاز حافظه و محدودیت های موجود در Google Colab ، به برخی از موانع جاده ای برخورد کردم.

 ! wget https://storage.googleapis.com/bert_models/2018_10_18/uncased_L-12_H-768_A-12.zip 

آن را از حالت فشرده خارج کنید:

 unzip uncased_L-12_H-768_A-12.zip 

خروجی باید به این شکل باشد:

 بایگانی: uncased_L-12_H-768_A-12.zip
   ایجاد: uncased_L-12_H-768_A-12 /
  تورم: uncased_L-12_H-768_A-12 / bert_model.ckpt.meta  
  تورم: uncased_L-12_H-768_A-12 / bert_model.ckpt.data-00000-از-۰۰۰۰۱  
  تورم: uncased_L-12_H-768_A-12 / vocab.txt  
  تورم: uncased_L-12_H-768_A-12 / bert_model.ckpt.index  
  تورم: uncased_L-12_H-768_A-12 / bert_config.json 

اکنون می توانیم پرونده تعریف مدل را کنار هم قرار دهیم.

پیشنهاد ویژه  How Google Chooses to Rank Images and Videos in Search Results

بیایید آن را با موردی که در قسمت اول ایجاد کردیم مقایسه کنیم.

من چندین تغییر ایجاد کردم بیایید آنها را مرور کنیم.

من اساسا رمزگذار از parallel_cnn به برت تغییر و اضافه پارامترهای اضافی مورد نیاز توسط برت: config_path، checkpoint_path، word_tokenizer، word_vocab_file، padding_symbol و unknown_symbol.

بیشتر مقادیر از الگوی زبانی که بارگیری کردیم ناشی می شود.

چند پارامتر دیگر را که به صورت تجربی فهمیدم اضافه کردم: batch_size ، Learn_rate و word_ შედეგიence_l طول_limit .

تبلیغات
ادامه خواندن زیر

مقادیر پیش فرض استفاده شده لودویگ برای این پارامترها برای رمزگذار BERT کار نمی کند زیرا در مقایسه با داده های از قبل آموزش دیده از کار خارج می شوند. برخی از مقادیر کار را در اسناد BERT یافتم.

روند آموزش همان کاری است که قبلاً انجام داده ایم. با این حال ، ابتدا باید bert-tensorflow را نصب کنیم .

 pip نصب bert-tensorflow را انجام دهید 
 آزمایش لودویگ 

  --data_csv سؤال_Classification_Dataset.csv 

  --model_definition_file model_definition.yaml 

ما عملکرد مدل قبلی خود را پس از تنها دو دوره شکست دادیم.

بهبود نهایی ۸۹/۰ دقت آزمون ترکیبی پس از ۱۰ دوره بود. مدل قبلی ما برای رسیدن به ۶۶۶۶ ، ۱۴ دوره را در اختیار گرفت.

تبلیغات
ادامه خواندن زیر

این بسیار جالب توجه است با توجه به اینکه ما هیچ کد ننوشتیم. ما فقط برخی از تنظیمات را تغییر دادیم.

این که چگونه تحقیقات یادگیری عمیق سریع و چقدر در حال حاضر در دسترس است ، باورنکردنی و جالب است.

چرا BERT خیلی خوب عمل می کند

دو مزیت اصلی در استفاده از BERT در مقایسه با رمزگذارهای سنتی وجود دارد:

  • تعبیه دو کلمه دو طرفه.
  • مدل زبان از طریق یادگیری انتقال استفاده می شود.

جاسازی کلمات دو طرفه

وقتی وکتورها و تعبیههای کلمه ای را در قسمت اول توضیح دادم ، به روش سنتی مراجعه می کردم (از یک قیاس GPS از مختصات در یک فضای خیالی استفاده کردم).

تبلیغات
ادامه خواندن زیر

رویکردهای تعبیه سنتی کلمات معادل مختصات GPS را به هر کلمه اختصاص می دهند.

بیایید معانی مختلف کلمه "واشنگتن" را مرور کنیم تا نشان دهیم چرا این مسئله می تواند در برخی سناریوها مشکلی ایجاد کند.

  • جورج واشنگتن (شخص)
  • واشنگتن (ایالت)
  • واشنگتن دی سی (شهر)
  • پل جورج واشنگتن (پل)

کلمه "واشنگتن" در بالا بیانگر چیزهای کاملاً متفاوت و سیستمی است که بدون در نظر گرفتن زمینه ، مختصات مشابه را اختصاص می دهد ، دقیقاً دقیق نخواهد بود.

اگر ما در دفتر NYC در Google هستیم و می خواهیم از "واشنگتن" بازدید کنیم ، باید زمینه بیشتری را فراهم کنیم.

تبلیغات
ادامه خواندن زیر
  • آیا ما قصد داریم از یادمان جورج واشنگتن بازدید کنیم؟
  • آیا قصد داریم به جنوب سفر کنیم تا از واشنگتن دی سی دیدن کنیم؟
  • آیا ما قصد سفر یک سفر متقاطع به ایالت واشنگتن را داریم؟

همانطور که در متن مشاهده می کنید ، واژگان پیرامون زمینه ای را ارائه می دهند که به وضوح می تواند معنای "واشنگتن" را تعریف کند.

اگر از چپ به راست خوانده اید ، کلمه جورج ممکن است نشانگر این باشد که در مورد شخص صحبت می کنید ، و اگر از راست به چپ بخوانید ، کلمه DC ، ممکن است بیانگر این باشد که به شهر مراجعه می کنید.

تبلیغات
ادامه خواندن زیر

اما ، شما باید از چپ به راست و از راست به چپ بخوانید تا به شما بگویید که واقعاً می خواهید از پل بازدید کنید.

BERT با رمزگذاری تعبیه های مختلف کلمات برای هر بار استفاده از کلمات کار می کند و برای انجام این کار به کلمات اطراف تکیه می کند. متن واژگان متن را به صورت دو طرفه می خواند (از چپ به راست و از راست به چپ).

به قیاس GPS ما بازگردید ، یک بلوک NYC را با دو کافی شاپ استارباکس در همان خیابان تصور کنید. اگر می خواهید به یک مورد خاص برسید ، مراجعه به مشاغل قبلی یا بعد از آن بسیار ساده تر است.

انتقال یادگیری

یادگیری انتقال احتمالاً یکی از مهمترین مفاهیم در یادگیری عمیق امروز است. این امر باعث می شود بسیاری از برنامه ها حتی درصورت داشتن مجموعه داده های بسیار کوچک برای آموزش ، عملی شوند.

تبلیغات
ادامه خواندن زیر

به طور سنتی ، یادگیری انتقال در درجه اول در کارهای بینایی رایانه مورد استفاده قرار می گرفت.

شما معمولاً دارای گروه های تحقیقاتی از شرکت های بزرگ (گوگل ، فیس بوک ، استنفورد ، و غیره) یک مدل طبقه بندی تصویر در یک مجموعه داده بزرگ مانند آن از Imagenet هستید .

این روند روزها طول می کشد و به طور کلی بسیار گران است. اما ، پس از انجام آموزش ، قسمت نهایی مدل آموزش دیده تعویض می شود و برای انجام کارهای مشابه اما جدید ، بر روی داده های جدید بازیابی می شود.

پیشنهاد ویژه  چگونه ابزار منفی ابزار جستجوگرها را منفی می کند

این فرایند تنظیم دقیق نامیده می شود و بسیار خوب عمل می کند. تنظیم دقیق بسته به اندازه داده های جدید می تواند ساعت ها یا چند دقیقه طول بکشد و در دسترس بیشتر شرکت ها است.

بیایید برای درک این موضوع به قیاس GPS خود برگردیم.

بگویید که می خواهید از شهر نیویورک به ایالت واشنگتن سفر کنید و شخصی که می شناسید به میشیگان می رود.

تبلیغات
ادامه خواندن زیر

به جای اجاره ماشین برای تمام راه ، می توانید آن سوار را پیاده کنید ، به میشیگان بروید ، و سپس با هزینه ای بسیار کمتر و زمان رانندگی ، ماشین را برای رانندگی از میشیگان به ایالت واشنگتن اجاره دهید.

BERT یکی از اولین مدل هایی است که یادگیری انتقال را با موفقیت در NLP (پردازش زبان طبیعی) به کار می برد. چندین مدل از قبل آموزش دیده وجود دارد که به طور معمول روزها برای آموزش لازم است ، اما اگر از TPU های Google Cloud استفاده می کنید ، می توانید ساعت ها یا حتی چند دقیقه هماهنگ باشید.

خودکار بینش Intent با BigQuery & Data Studio

اکنون که یک مدل آموزش دیده داریم ، می توانیم با استفاده از گزارشی که در قسمت اول ایجاد کردم ، سؤالات جدیدی را که می توانیم از Google Console Search بگیریم آزمایش کنیم.

برای تولید پیش بینی ها می توانیم همان کد قبلی را اجرا کنیم.

تبلیغات
ادامه خواندن زیر

این بار نیز می خواهم آنها را به CSV صادر کنم و وارد BigQuery شود.

 test_df.join (پیش بینی ها) [["پرس و جو" ، "کلیک" ، "برداشت" ، "طبقه ۰_ پیش بینی" ، "طبقه ۲_ پیش بینی"]] to_csv ("intent_predictions.csv") 

ابتدا وارد Google Cloud شوید.

 ! gcloud auth login - مرورگر راه اندازی نشده است 

پنجره مجوز را در یک برگه جداگانه باز کنید و نشان را دوباره به Colab کپی کنید.

یک سطل را در Google Cloud Storage ایجاد کنید و پرونده CSV را در آنجا کپی کنید. سطل خود را bert_intent_questions نام دادم.

این دستور پرونده CSV ما را در سطل ما بارگذاری می کند.

 gsutil cp -r intent_predictions.csv gs: // bert_intent_questions 

همچنین برای وارد کردن پرونده باید یک مجموعه داده در BigQuery ایجاد کنید. من مجموعه داده خود را bert_intent_questions نامگذاری کردم

 ! bq load --autodetect --source_format = CSV bert_intent_questions.intent_prediction gs: //bert_intent_questions/intent_predictions.csv 

بعد از اینکه پیش بینی های خود را در BigQuery انجام دادیم ، می توانیم آن را به Data Studio وصل کنیم و یک گزارش فوق العاده با ارزش تهیه کنیم تا به ما کمک کند تجسم کنیم که اهداف بیشترین فرصت را دارند.

پس از اتصال Data Studio به مجموعه داده BigQuery ، با تقسیم برداشت و کلیک ، زمینه جدیدی ایجاد کردم: CTR.

تبلیغات
ادامه خواندن زیر

همانطور که ما با استفاده از اهداف پیش بینی شده آنها پرس و جوها را گروه بندی می کنیم ، می توانیم در جایی که قصد داشته باشیم با برداشتهای جستجوی بالا و تعداد کم کلیک ، فرصتهای محتوایی پیدا کنیم. این مربعهای آبی سبک تر هستند.

نحوه کار فرایند یادگیری

من می خواهم این مبحث اساسی را برای گسترش ایده رمزگذار / رمزگشایی که مختصراً در قسمت یک پوشیده شده ، پوشش دهم.

بگذارید نگاهی به نمودارهای زیر بیندازیم که به ما در تجسم روند آموزش کمک می کند.

تبلیغات
ادامه خواندن زیر

اما ، دقیقاً چه اتفاقی در اینجا می افتد؟ چگونه این مدل یادگیری ماشین قادر است وظایفی را که ما در حال آموزش هستیم انجام دهیم؟

نمودار اول نشان می دهد که چگونه خطا / ضرر کاهش می یابد که در هر مرحله آموزش (خط آبی) انجام می شود.

مهمتر از همه ، هنگام آزمایش مدل بر روی داده های "غیب" ، خطا نیز کاهش می یابد. سپس ، به نقطه‌ای می رسد که هیچ پیشرفت دیگری صورت نمی گیرد.

تبلیغات
ادامه خواندن زیر

من دوست دارم در مورد این فرآیند آموزش به عنوان حذف نویز / خطاها از ورودی توسط آزمایش و خطا فکر کنم ، تا زمانی که آنچه را که برای انجام وظیفه ضروری است ، باقی نمانید.

برخی از جستجوهای تصادفی درگیر شده اند تا بدانند که چه چیزی را حذف کرده و چه چیزهایی را باید حفظ کنند ، اما به عنوان خروجی / رفتار ایده آل شناخته شده است ، جستجوی تصادفی می تواند بسیار انتخابی و کارآمد باشد.

بیایید دوباره بگوییم که شما می خواهید از NYC به واشنگتن بروید و همه جاده ها با برف پوشیده شده اند. در این حالت رمزگذار نقش کامیون برفی را با وظیفه حک کردن جاده برای شما ایفا می کند.

دارای مختصات GPS مقصد است و می تواند از آن استفاده کند تا بفهمد تا چه حد یا نزدیکی آن نزدیک است ، اما باید بفهمد که چگونه با آزمایش و خطا هوشمند به آنجا رسیدید. رمزگشایی اتومبیل ما به دنبال جاده های ایجاد شده توسط برف گیر برای این سفر است.

تبلیغات
ادامه خواندن زیر

اگر آدم برفی خیلی به سمت جنوب حرکت کند ، می تواند بگوید که در جهت اشتباه پیش می رود زیرا از مقصد نهایی GPS دورتر می شود.

پیشنهاد ویژه  چگونه امنیت وب سایت بر SEO شما تأثیر می گذارد؟

یادداشت در مورد بیش از حد اتصالات

بعد از اتمام کار برفی ، وسوسه انگیز است که فقط تمام چرخش های مورد نیاز برای رسیدن به آنجا را به خاطر بسپاریم ، اما این مسئله باعث می شود که سفر ما در مواردی که ما نیاز به پیاده روی داریم و هیچ جاده ای برای آن کنده نشده ایم انعطاف پذیر شود.

بنابراین ، حفظ کردن خوب نیست و در اصطلاحات یادگیری عمیق ، اضافه کردن به آن گفته می شود. در حالت ایده آل ، برف گیر بیش از یک راه برای رسیدن به مقصد ما حک می کند.

به عبارت دیگر ، ما باید تا حد امکان به مسیرهای تعمیم یافته نیاز داشته باشیم.

ما این کار را با نگه داشتن داده ها در طی فرایند آموزش انجام می دهیم.

تبلیغات
ادامه خواندن زیر

ما از مجموعه داده های آزمایش و اعتبار سنجی استفاده می کنیم تا مدل های خود را تا حد امکان عمومی نگه داریم.

یادداشتی درباره Tensorflow برای BigQuery

من سعی کردم پیش بینی های خود را مستقیماً از BigQuery اجرا کنم ، اما وقتی سعی کردم مدل آموزش دیده خود را وارد کنم ، به یک سد راه افتادم.

 پرس و جو bq 
--use_legacy_sql = نادرست 
"ایجاد مدل 
bert_intent_questions.BERT 
گزینه ها 
(MODEL_TYPE = 'TENSORFLOW' ، 
MODEL_PATH = 'gs: // bert_intent_questions / *') " 

BigQuery در مورد اندازه مدل از حد مجاز آنها شکایت کرد.

 در حال انتظار برای bqjob_r594b9ea2b1b7fe62_0000016c34e8b072_1 ... (0s) وضعیت فعلی: خطای بزرگ DQ BigGuery در عملکرد پرس و جو: خطای پردازش کار "محکم-اکنون-۲۴۸۰۱۸: bqjob_r594b9ea2b1b7fe62_0000016c34e اندازه داده داده اندازه کل حداقل: ۱۳۱۹۲۳۵۰۴۷؛ حداکثر اندازه مجاز: ۲۶۸۴۳۵۴۵۶ 

من به حمایت آنها رسیدم و آنها پیشنهادهایی ارائه دادند. من در اینجا به اشتراک می گذارم اگر کسی زمان آزمایش آنها را پیدا کند.

منابعی برای کسب اطلاعات بیشتر

وقتی کلاسهای یادگیری عمیق را شروع کردم ، BERT یا جدیدترین معماری های شبکه عصبی هنری را ندیدم.

تبلیغات
ادامه خواندن زیر

با این حال ، بنیادی که من به دست آوردم ، به من کمک کرده است تا به سرعت مفاهیم و ایده های جدید را انتخاب کنم. یکی از مقاله هایی که برای یادگرفتن پیشرفت های جدید مفید ترین آنها را پیدا کردم این بود: The Illustrated BERT، ELMo، and co. (چگونه یادگیری انتقال NLP شکست خورده است) .

من این یکی را نیز بسیار مفید یافتم: مقاله Dissected: BERT: Pre- train of Transformers Deep Bidirectional for Understanding Language "توضیح داد و این یکی دیگر از همان نشریه: مقاله Dissected:" XLNet: General Autorgress Preretrising for Understanding Language " .

اخیراً BERT توسط مدل جدیدی به نام XLNet مورد ضرب و شتم قرار گرفته است. امیدوارم وقتی این مقاله در لودویگ در دسترس قرار گیرد ، در مقاله بعدی آن را پوشش دهم.

حرکت پایتون در جامعه SEO همچنان رو به رشد است. در اینجا چند مثال آورده شده است:

تبلیغات
ادامه خواندن زیر

پل شاپیرو در اوایل این ماه پایتون را به مرحله MozCon آورد. او اسکریپت هایی را که هنگام صحبت صحبت کرده بود به اشتراک گذاشت .

وقتی توئیتر رادون ، سئو کارشناسی ارشد ، به سرعت متوجه اشکالی شد که از دست دادم ، زیرا او به طور مستقل یک کد مشابه را ایجاد کرده است ، خوشحال شدم.

مایکل وبر پیش بینی کننده رتبه بندی عالی خود را که از طبقه بندی پرسپترون چند لایه استفاده می کند به اشتراک گذاشت و آنتوان اریپرت مانیتور تغییر ارزشمند robot.txt را به اشتراک گذاشت!

تبلیغات
ادامه خواندن زیر

همچنین لازم به ذکر است که JR یک قطعه بسیار مفید Python را برای openource.com کمک کرده است که موارد استفاده کاربردی از API زبان طبیعی Google را نشان می دهد.

منابع بیشتر:


اعتبار تصویر

تمام تصاویر گرفته شده توسط نویسنده ، ژوئیه ۲۰۱۹

منبع مقاله

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *