گه اهل بازشناسی گفتار باشید باید حتما اسم conformer به گوشتون خورده باشه. این معماری که توسط گوگل و حدود یک سال پیش معرفی شد در زمان خودش پرچمدار بود و مرزهای دانش رو جابهجا کرد. ایدهاش هم خیلی ساده و زیبا بود. لایههای کانولووشنی خیلی خوب فیچرهای لوکال رو استخراج میکنند و از طرفی بلوکهای ترنسفورمر هم خیلی خوب کانتکست و فیچرها رو به صورت گلوبال استخراج میکنند. خب عقل سلیم چی میگه؟ آقای Gulati و یه مینیبوس از همکاراش سریعا به این نتیجه رسیدند که چرا توی کاربرد صوت که هم به فیچرهای لوکال و هم به کانتکست گلوبال نیاز داریم نیایم و این دوتا رو بریزیم روی هم؟ خلاصه که باز یه خارش جدید در حوزه دانش منجر به ایجاد یه معماری خوب و بهینه برای بازشناسی گفتار شد.
در واقع conformer یه بلوک انکودر هست که میتونه خیلی خوب اصوات رو برای مقاصد بازشناسی گفتار انکود کنه. هر بلاکش شامل چهار ماژول اصلی هست که به ترتیب عبارتند از: یه لایه feed forward، یه لایه multi-head self attention، یه لایه کانوولوشن و دوباره یه لایه feed forward. وجود لایه multi-head self-attention و لایه کانولووشنی باعث میشه که مدل همزمان بتونه هم فیچرهای لوکال رو خوب استخراج کنه (همونطور که میدونید وقتی شما حرف میزنید دهانتون پیوسته تکون میخوره و فرکانس تولیدی حروف به نرمی درون همدیگه ادغام میشند و تغییرات فرکانس به نرمی صورت میگیره. درست مثل تصاویر که در یک قسمت عکس با احتمال بالا، مقادیر RGB به هم نزدیک هستند مگر اینکه یه آبجکت جدید وجود داشته باشه و همین افزونگی میتونه فیچرهای خوبی به ما بده) و هم اینکه با استفاده از لایه attention کانتکست و فیچرهای گلوبال رو هم خوب بفهمه. نتیجه اینکه این مدل در سه سایز عرضه شده و در سایز متوسطش که تنها ۳۰ میلیون پارامتر داره تونسته مدل SOTA قبلی رو که ۱۱۸ میلیون پارامتر داره شکست بده و در حالتی که ۱۱۸ میلیون پارامتر داشته به WER بینظیر ۱.۹ درصد بر روی دادگان LibriSpeech رسیده. حتما شاید براتون سوال شده باشه که آیا همه این ماژولهای conformer لازم هست؟ برای این کار هم مطالعه Ablation انجام شده (در این مطالعه هر قسمت رو از مدل حذف میکنند تا ببینند آیا نتایج ثابت میمونه یا بدتر میشه درصورتی که بدتر بشه تاثیرگذار بودن اون قسمت اثبات میشه. توصیه میشه در کارهاتون همیشه ablation study داشته باشید تا جایی نخوابید که آب زیرتون بره و مثلا کلی پارامتر اضافی تولید کرده باشید!). معماری این مدل رو در تصاویر میتونید ببینید. توصیه میکنیم این مقاله کوتاه رو حتما مطالعه کنید. همچنین این معماری در ابزار OpenSpeech هم وجود داره که میتونید به راحتی ازش استفاده کنید.
لینک مقاله
لینک کد