مفيد بودن شبكه عصبي آنالوگ مصنوعي بصورت خيلي نزديكي با ميزان قابليت آموزش پذيري آن محدود مي شود .
اين مقاله يك معماري شبكه عصبي آنالوگ جديد را معرفي مي كند كه وزنهاي بكار برده شده در آن توسط الگوريتم ژنتيك تعيين مي شوند .
اولين پياده سازي VLSI ارائه شده در اين مقاله روي سيليكوني با مساحت كمتر از ۱mm كه شامل ۴۰۴۶ سيناپس و ۲۰۰ گيگا اتصال در ثانيه است اجرا شده است .

از آنجائيكه آموزش مي تواند در سرعت كامل شبكه انجام شود بنابراين چندين صد حالت منفرد در هر ثانيه مي تواند توسط الگوريتم ژنتيك تست شود .
اين باعث مي شود تا پياده سازي مسائل بسيار پيچيده كه نياز به شبكه هاي چند لايه بزرگ دارند عملي بنظر برسد .

۱- مقدمه
شبكه هاي عصبي مصنوعي به صورت عمومي بعنوان يك راه حل خوب براي مسائلي از قبيل تطبيق الگو مورد پذيرش قرار گرفته اند .
عليرغم مناسب بودن آنها براي پياده سازي موازي ، از آنها در سطح وسيعي بعنوان شبيه سازهاي عددي در سيستمهاي معمولي استفاده مي شود .
يك دليل براي اين مسئله مشكلات موجود در تعيين وزنها براي سيناپسها در يك شبكه بر پايه مدارات آنالوگ است .
موفقترين الگوريتم آموزش ، الگوريتم Back-Propagation است .

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

دليل اين مشكل ، تغييرات قطعه و توابع تبديل نرونها و در نتيجه تغيير مشتقات اول آنها از نروني به نرون ديگر و از تراشه اي به تراشه ديگر است و چه چيزي مي تواند بدتر از اين باشد كه آنها با دما نيز تغيير كنند .
ساختن مدارات آنالوگي كه بتوانند همه اين اثرات را جبران سازي كنند امكان پذير است ولي اين مدارات در مقايسه با مدارهايي كه جبران سازي نشده اند داراي حجم بزرگتر و سرعت كمتر هستند .

براي كسب موفقيت تحت فشار رقابت شديد از سوي دنياي ديجيتال ، شبكه هاي عصبي آنالوگ نبايد سعي كنند كه مفاهيم ديجيتال را به دنياي آنالوگ انتقال دهند .
در عوض آنها بايد تا حد امكان به فيزيك قطعات متكي باشند تا امكان استخراج يك موازي سازي گسترده در تكنولوژي VLSI مدرن بدست آيد .
شبكه هاي عصبي براي چنين پياده سازيهاي آنالوگ بسيار مناسب هستند زيرا جبران سازي نوسانات غير قابل اجتناب قطعه مي تواند در وزنها لحاظ شود .

مسئله اصلي كه هنوز بايد حل شود آموزش است .
حجم بزرگي از مفاهيم شبكه عصبي آنالوگ كه در اين زمينه مي توانند يافت شوند ، تكنولوژيهاي گيت شناور را جهت ذخيره سازي وزنهاي آنالوگ بكار مي برند ، مثل EEPROM حافظه هاي Flash .

در نظر اول بنظر مي رسد كه اين مسئله راه حل بهينه اي باشد .
آن فقط سطح كوچكي را مصرف مي كند و بنابراين حجم سيناپس تا حد امكان فشرده مي شود (كاهش تا حد فقط يك ترانزيستور) .
دقت آنالوگ مي تواند بيشتر از ۸ بيت باشد و زمان ذخيره سازي داده (با دقت ۵ بيت) تا ۱۰ سال افزايش مي يابد .
اگر قطعه بطور متناوب مورد برنامه ريزي قرار گيرد ، يك عامل منفي وجود خواهد داشت و آن زمان برنامه ريزي و طول عمر محدود ساختار گيت شناور است .
بنابراين چنين قطعاتي احتياج به وزنهايي دارند كه از پيش تعيين شده باشند .

اما براي محاسبه وزنها يك دانش دقيق از تابع تبديل شبكه ضروري است .
براي شكستن اين چرخه پيچيده ، ذخيره سازي وزن بايد زمان نوشتن كوتاهي داشته باشد .
اين عامل باعث مي شود كه الگوريتم ژنتيك وارد محاسبات شود .

با ارزيابي تعداد زيادي از ساختارهاي تست مي توان وزنها را با بكار بردن يك تراشه واقعي تعيين كرد .
همچنين اين مسئله مي تواند حجم عمده اي از تغييرات قطعه را جبران سلزي كند ، زيرا داده متناسب شامل خطاهايي است كه توسط اين نقايص ايجاد شده اند .

اين مقاله يك معماري شبكه عصبي آنالوگ را توصيف مي كند كه براي الگوريتم هاي ژنتيك بهينه شده اند .
سيناپس ها كوچك ۱۰X10μm و سريع هستند .

فركانس اندازه گيري شده شبكه تا ۵۰MHz افزايش مي يابد كه در نتيجه بيش از ۲۰۰ گيگا اتصال در ثانيه براي آرايه كاملي از ۴۰۹۶ سيناپس بدست مي آيد .
براي ساختن شبكه هاي بزرگتر بايد امكان تركيب چندين شبكه كوچكتر روي يك سطح يا روي تراشه هاي مختلف وجود داشته باشد كه با محدود كردن عملكرد آنالوگ به سيناپس ها و وروديهاي نرون بدست مي آيد .

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

شبكه ارائه شده در اين مقاله براي يك جريان عددي real-time‌ در محدوده فركانسي ۱ – ۱۰۰MHz و پهناي ۶۴ بيت بهينه شده است .
قصد داريم كه آن را براي كاربردهاي انتقال داده مثل DSL‌ سرعت بالا ، پردازش تصوير بر اساس داده ديجيتالي لبه توليد شده توسط تصاوير دوربين بوسيله تراشه پيش پردازش آنالوگي و ارزيابي تناسبي آرايه ترانزيستور قابل برنامه ريزي كه در گروه ما توسعه داده شده است بكار ببريم .

۲- تحقق شبكه عصبي

۲-۱- اصول عملكرد
شكل۱ يك بيان سمبوليك از شبكه عصبي دور زننده را نشان مي دهد .
هر نرون ورودي (دايره كوچك) بوسيله يك سيناپس (پيكان) به هر نرون خروجي متصل شده است .
نرونهاي خروجي توسط مجموعه دومي از نرون هاي ورودي به داخل شبكه فيدبك شده اند .
نرون هاي ورودي فقط بجاي تقويت كننده ها بكار گرفته مي شوند در صورتيكه پردازش در نرون هاي خروجي انجام مي شود .

اين معماري شبكه هاي چند لايه مجازي را با انتخاب وزنهاي مناسب ارائه مي دهد .
يك مثال براي ساختار ۲ لايه در سمت راست شكل ۱ نشان داده شده است .
وزنهاي سيناپس هايي كه در حالت صفر تنظيم شده اند با پيكانهاي خط چين نشان داده شده اند .
يك شبكه فيدبك آموزش داده شده توسط الگوريتم ژنتيك معمولا تعداد ثابتي از لايه ها ندارد .
البته الگوريتم مي تواند به تعداد ثابتي از لايه ها محدود شود ، همانطوريكه در شكل۱ نشان داده شده است .

اما بنظر مي رسد كه معمولا بهتر است اجازه داده شود تا الگوريتم ژنتيك بهترين تعداد لايه ها را انتخاب كند .
همچنين بين لايه هاي مجازي مرز دقيقي وجود ندارد .
براي جلوگيري از تلف شدن سيناپس در صورتيكه همه مسيرهاي فيدبك استفاده نشده باشند ، شبكه ارائه شده نرون هاي ورودي را بين نرون هاي خروجي و خروجي هاي فيدبك تقسيم (share) مي كند .

شكل ۲ اصول عملكرد يك تك نرون را نشان مي دهد .

وزنهاي سيناپسي تحت عنوان بار روي خازن ذخيره مي شوند (خازن ذخيره ساز) .
عملكرد نرون به دو فاز تقسيم مي شود : پيش شارژ (Precharge) و ارزشيابي (Evaluate)
در فاز پيش شارژ همه كليدهاي موجود در سيناپس ها به سمت بافر تنظيم مي شوند و سيگنال پيش شارژ در نرون فعال است .
در هر سيناپس ، خازن خروجي از طريق بافر وزن به همان مقدار ولتاژي كه روي خازن ذخيره قرار دارد شارژ مي شود .
نرون از يك مقايسه كننده ( Comparator ) و يك Latch تشكيل مي شود .
سيگنال پيش شارژ كليد مابين دو ورودي مقايسه كننده را مي بندد .
و در نتيجه سيگنال Post-Synaptic با ولتاژ مرجعي پيش شارژ مي شود كه سطح صفر شبكه را تعيين مي كند .

در فاز ارزشيابي ، حاصل جمع همه سيناپس ها با اين ولتاژ پيش شارژ مقايسه مي شود .
اگر در سيگنال سيناپس افزايشي روي دهد نرون فعال مي شود .

اين حالت نرون در فليپ فلاپ ذخيره مي شود وقتي كه فاز از حالت ارزشيابي به حالت پيش شارژ تغيير كند .
در فاز ارزشيابي به شرط فعال بودن سيگنال Pre-Synaptic كليد سيناپس خازن خروجي را با سيگنال Post-Synaptic متصل مي كند .
سيگنال هاي Pre-Synaptic بسته به ورودي شبكه و اطلاعات فيدبك توسط نرون هاي ورودي توليد مي شوند .

اين چرخه مي تواند به دفعات ثابتي تكرار شود تا شبكه را به تعداد لايه ماكزيمم محدود كند و همچنين زمان پردازش را براي يك الگوي ورودي محدود كند .
همچنين وقتي كه داده ورودي از چرخه اي به چرخه ديگر تغيير مي كند شبكه مي تواند بصورت پيوسته اجرا شود .
اين براي كاربردهاي پردازش سيگنال مفيد است .

شكل ۳ بلوك دياگرام نمونه نخستين شبكه عصبي توسعه يافته را نشان مي دهد .

عنصر مركزي يك آرايه سيناپسي ۶۴X64 است .
خطوط Post-Synaptic متعلق به ۶۴ نرون خروجي بطور افقي از طريق سيناپس ها اجرا مي شوند در حاليكه سيگنالهاي سيناپتيك از نرونهاي ورودي كه در پايين و بالا قرار گرفته اند بداخل آرايه تغذيه مي شوند .

هر نرون ورودي مي تواند طوري تركيب بندي شود تا براي ورودييش ، داده خارجي و يا داده را از شبكه خودش قبول كند .
اين داده داخلي بطور متناوب از دو منبع مي آيد .
نرونهاي ورودي فرد يك سيگنال فيدبك را از يك نرون خروجي دريافت مي كنند در صورتيكه نمونه زوج خروجي معكوس را از همسايه فردش مي گيرد .
اگر نرون زوج به همتاي فردش وصل شود آنها با هم يك ورودي تفاضلي را تشكيل مي دهند ، از آنجاييكه سيگنال باينري به يك جفت ورودي متناوب تبديل مي شود .

اين مسئله براي دو هدف مفيد است .
اگر داده كد شده باينري بكار برده شود ، تعداد نرونهاي ورودي فعال همواره يكسان باقي مي ماند .
دليل دوم به روش محاسبه ولتاژ Post-Synaptic مربوط مي شود .
Qi باري است كه روي خازن خروجي سيناپس ذخيره شده است .
Ii سيگنال pre-synaptic است .

بعنوان يك مقدار باينري مقدار آن صفر يا يك است .
اگر Vpostsyn > Vprecharge باشد ، نرون فعال مي شود .
نه تنها صورت كسر ، بلكه مخرج كسر نيز به همه سيگنالهاي ورودي بستگي دارد .
اين مسئله اين مشكل را دارد كه اگر يك سيگنال ورودي تغيير كند ، تاثير وزنهاي ديگر روي Vpostsyn همچنين تغيير مي كند .
با وجود اينكه در مدل ساده معادله ۱ نشان داده شده است كه پاسخ شبكه همان مقدار باقي مي ماند ولي اجراي شبكه واقعي ممكن است متضرر شود .
جهت اجتناب از اين اثر ورودي تفاضلي به ازاي هر ورودي داده يك نرون ورودي را فعال مي كند .
خازن سوئيچ شونده به خط سيگنال post-synaptic از داده مستقل مي شود .
بنابراين مخرج معادله ۱ براي هر نوع تغييرات ورودي تفاضلي يكسان باقي مي ماند .
ضرر حاصله كاهش تعداد ورودي مستقل است چرا كه هر ورودي تفاضلي يك نرون ورودي فرد را با يك نرون ورودي زوج تركيب مي كند .

۲-۲- پياده سازي مدارهاي شبكه
يك تصوير ميكرويي (micro photograph) از تراشه ساخته شده در شكل ۴ ديده مي شود .

تكنولوژي بكار رفته ، فرايند CMOS-0.35μm يك poly و سه لايه فلز است .
اندازه die بوسيله صفحات ورودي/خروجي (IO pads) كه براي ارتباط با سيستم تست لازم هستند تعيين مي شود .
آرايه سيناپس مساحتي كمتر از ۰٫۵mm را اشغال مي كند .
در ولتاژ ۳٫۳ ولت عمل كرده و تواني در حدود ۵۰Mw مصرف مي كند .

شكل ۵ بلوك مداري يك سيناپس را نشان مي دهد .

هر دو تا از خازن ها توسط ترانزيستور MOS پياده سازي شده اند .
بافر وزن بعنوان يك source follower توسط قطعات M1 و M2 تحقق پيدا كرده است .
افست و بهره اين source follower با ولتاژ باياس به همان خوبي دما تغيير مي كند .
بنابراين تقويت كننده عملياتي كه خارج از آرايه سيناپس قرار دارد ولتاژ ورودي وزن را تصحيح مي كند تا ولتاژ خروجي source follower با ولتاژ وزن مطلوب كه از طريق M7‌ بصورت پسخورد تغذيه شده است برابر شود .

خطاي تزريق بار ايجاد شده توسط M6 كه به تطبيق نشدگي (mismatch) القايي كارخانه وابسته است مي تواند توسط مقدار وزن جبران سازي شود .
M3 در فاز پيش شارژ شبكه بسته مي شود تا خازن خروجي را به اندازه ولتاژ وزن شارژ كند .
M5 با شارژ كامل در مرحله اول باعث سرعت بخشيدن به اين فرايند مي شود .

از آنجاييكه جريان خروجي source follower براي يك جريان خارج شونده از M1 خيلي بزرگتر از مقداري است كه وارد M2 مي شود ، در نتيجه آن خازن را دشارژ مي كند سريعتر از آني كه مي تواند آن را شارژ كند .

بنابراين زمان كل براي شارژ خازن خروجي به ولتاژ دلخواه بوسيله تركيب اين دشارژ و شارژ كاهش مي يابد .
در فاز ارزيابي ، M4 توسط سيگنال pre-synaptic نرون ورودي متصل به سيناپس فعال مي شود .
تقسيم (sharing) بار بين همه سيناپس هاي فعال هر نرون خروجي در خطوط post-synaptic اتفاق مي افتد .

در شكل ۶‌ قسمتي از layout‌ ترسيم شده آرايه سيناپس نشان داده شده است .

بيشتر سطح بوسيله دو خازن استفاده شده اند .
مقادير براي خازنهاي ذخيره سازي و خروجي به ترتيب در حدود ۶۰Ff و ۱۰۰fF هستند .
بار خازن هاي ذخيره سازي بايد بخاطر جريانهاي نشتي ترانزيستور بصورت متناوب refresh شوند .
در فاز آموزش وقتي كه وزنها update مي شوند اين بصورت اتوماتيك اتفاق مي افتد وگرنه عمل refresh در حدود ۲%‌ ظرفيت شبكه را اشغال مي كند .