<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>بایگانی‌های stochastic gradient descent - ايران متلب</title>
	<atom:link href="https://matlab1.ir/tag/stochastic-gradient-descent/feed/" rel="self" type="application/rss+xml" />
	<link>https://matlab1.ir/tag/stochastic-gradient-descent/</link>
	<description>مرجع فیلم های آموزشی فارسی دانشگاهی و مهندسی</description>
	<lastBuildDate>Sun, 25 Aug 2019 10:21:50 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://matlab1.ir/wp-content/uploads/2017/08/ref_a2-150x150.png</url>
	<title>بایگانی‌های stochastic gradient descent - ايران متلب</title>
	<link>https://matlab1.ir/tag/stochastic-gradient-descent/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>شبکه های عصبی مصنوعی</title>
		<link>https://matlab1.ir/%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8%db%8c-%d9%85%d8%b5%d9%86%d9%88%d8%b9%db%8c/</link>
					<comments>https://matlab1.ir/%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8%db%8c-%d9%85%d8%b5%d9%86%d9%88%d8%b9%db%8c/#comments</comments>
		
		<dc:creator><![CDATA[ایران متلب]]></dc:creator>
		<pubDate>Thu, 15 Jan 2015 12:48:14 +0000</pubDate>
				<category><![CDATA[آموزش]]></category>
		<category><![CDATA[دانلود]]></category>
		<category><![CDATA[شبکه های عصبی]]></category>
		<category><![CDATA[افزودن ممنتم]]></category>
		<category><![CDATA[الگوریتم BP]]></category>
		<category><![CDATA[Genetic Algorithms]]></category>
		<category><![CDATA[Hybrid Global Learning]]></category>
		<category><![CDATA[k-fold cross validation]]></category>
		<category><![CDATA[Radial Basis Functions]]></category>
		<category><![CDATA[Recurrent Network]]></category>
		<category><![CDATA[Simulated Annealing]]></category>
		<category><![CDATA[stochastic gradient descent]]></category>
		<category><![CDATA[Vallidation]]></category>
		<category><![CDATA[بایاس کردن شبکه برای فضاهای فرضیه ساده تر]]></category>
		<category><![CDATA[تابع سیگموئید]]></category>
		<category><![CDATA[توابع بولی]]></category>
		<category><![CDATA[توابع پیوسته]]></category>
		<category><![CDATA[دلایل رخ دادن overfitting]]></category>
		<category><![CDATA[شبکه feedforward]]></category>
		<category><![CDATA[شبکه عصبی]]></category>
		<category><![CDATA[فرضیه اقلیدسی]]></category>
		<category><![CDATA[قانون تغییر وزنها]]></category>
		<category><![CDATA[قدرت تعمیم]]></category>
		<category><![CDATA[لایه پنهان]]></category>
		<category><![CDATA[مجموعه آموزش]]></category>
		<category><![CDATA[وزنهای یک شبکه عصبی]]></category>
		<guid isPermaLink="false">http://am19.siteground.biz/~matlab18/matlab1.ir/?p=1427</guid>

					<description><![CDATA[<p>شبکه عصبی مصنوعی روشی عملی برای یادگیری توابع گوناگون نظیر توابع با مقادیر حقیقی، توابع با مقادیر گسسته و توابع با مقادیر برداری میباشد. یادگیری شبکه عصبی در برابر خطاهای داده های آموزشی مصون بوده و اینگونه شبکه ها با موفقیت به مسائلی نظیر شناسائی گفتار، شناسائی و تعبیر تصاویر، و یادگیری روبات اعمال شده [&#8230;]</p>
<p>نوشته <a href="https://matlab1.ir/%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8%db%8c-%d9%85%d8%b5%d9%86%d9%88%d8%b9%db%8c/">شبکه های عصبی مصنوعی</a> اولین بار در <a href="https://matlab1.ir">ايران متلب</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<p>شبکه عصبی مصنوعی روشی عملی برای یادگیری توابع گوناگون نظیر توابع با مقادیر حقیقی، توابع با مقادیر گسسته و توابع با مقادیر برداری میباشد.<br />
یادگیری شبکه عصبی در برابر خطاهای داده های آموزشی مصون بوده و اینگونه شبکه ها با موفقیت به مسائلی نظیر شناسائی گفتار، شناسائی و تعبیر تصاویر، و یادگیری روبات اعمال شده است.</p>
<p>شبکه عصبی چیست؟<br />
روشی برای محاسبه است که بر پایه اتصال به هم پیوسته چندین واحد پردازشی ساخته میشود.<br />
شبکه از تعداد دلخواهی سلول یا گره یا واحد یا نرون تشکیل میشود که مجموعه ورودی را به خروجی ربط میدهند.</p>
<p>شبکه عصبی چه قابلیتهائی دارد ؟<br />
محاسبه یک تابع معلوم<br />
تقریب یک تابع ناشناخته<br />
شناسائی الگو<br />
پردازش سیگنال<br />
یادگیری</p>
<p>مسائل مناسب برای یادگیری شبکه های عصبی<br />
خطا در داده های آموزشی وجود داشته باشد. مثل مسائلی که داده های آموزشی دارای نویز حاصل از دادهای سنسورها نظیر دوربین و میکروفن ها هستند.<br />
مواردی که نمونه ها توسط مقادیر زیادی زوج ویژگی-مقدار نشان داده شده باشند. نظیر داده های حاصل از یک دوربین ویدئوئی.<br />
تابع هدف دارای مقادیر پیوسته باشد.<br />
زمان کافی برای یادگیری وجود داشته باشد. این روش در مقایسه با روشهای دیگر نظیر درخت تصمیم نیاز به زمان بیشتری برای یادگیری دارد.<br />
نیازی به تعبیر تابع هدف نباشد. زیرا به سختی میتوان اوزان یادگرفته شده توسط شبکه را تعبیر نمود.</p>
<p>الهام از طبیعت<br />
مطالعه شبکه های عصبی مصنوعی تا حد زیادی ملهم از سیستم های یادگیر طبیعی است که در آنها یک مجموعه پیچیده از نرونهای به هم متصل در کار یادگیری دخیل هستند.<br />
گمان میرود که مغز انسان از تعداد 10 11 نرون تشکیل شده باشد که هر نرون با تقریبا 104 نرون دیگر در ارتباط است.<br />
سرعت سوئیچنگ نرونها در حدود 10-3 ثانیه است که در مقایسه با کامپیوترها 10 -10 ) ثانیه ( بسیار ناچیز مینماید. با این وجود آدمی قادر است در 0.1 ثانیه تصویر یک انسان را بازشناسائی نماید. این قدرت فوق العاده باید از پردازش موازی توزیع شده در تعدادی زیادی از نرونها حاصل شده باشد.</p>
<p>Perceptron<br />
نوعی از شبکه عصبی برمبنای یک واحد محاسباتی به نام پرسپترون ساخته میشود. یک پرسپترون برداری از ورودیهای با مقادیر حقیقی را گرفته و یک ترکیب خطی از این ورودیها را محاسبه میکند. اگر حاصل از یک مقدار آستانه بیشتر بود خروجی پرسپترون برابر با 1 و در غیر اینصورت معادل -1 خواهد بود .</p>
<p>یادگیری پرسپترون عبارت است از:<br />
پیدا کردن مقادیردرستی برای W<br />
بنابراین فضای فرضیه H در یادگیری پرسپترون عبارت است ازمجموعه تمام مقادیر حقیقی ممکن برای بردارهای وزن.</p>
<p>توانائی پرسپترون<br />
پریسپترون را میتوان بصورت یک سطح تصمیم hyperplane در فضای n بعدی نمونه ها در نظر گرفت. پرسپترون برای نمونه های یک طرف صفحه مقدار 1 و برای مقادیر طرف دیگر مقدار -1 بوجود میاورد.</p>
<p>توابعی که پرسپترون قادر به یادگیری آنها میباشد<br />
یک پرسپترون فقط قادر است مثالهائی را یاد بگیرد که بصورت خطی جداپذیر باشند. اینگونه مثالها مواردی هستند که بطور کامل توسط یک hyperplaneقابل جدا سازی میباشند.</p>
<p>توابع بولی و پرسپترون<br />
یک پرسپترون میتواند بسیاری از توابع بولی را نمایش دهد نظیر AND, OR, NAND, NOR<br />
اما نمیتواند XORرا نمایش دهد.<br />
در واقع هر تابع بولی را میتوان با شبکه ای دوسطحی از پرسپترونها نشان داد.</p>
<p>اضافه کردن بایاس<br />
افزودن بایاس موجب میشود تا استفاده از شبکه پرسپترون با سهولت بیشتری انجام شود.<br />
برای اینکه برای یادگیری بایاس نیازی به استفاده از قانون دیگری نداشته باشیم بایاس را بصورت یک ورودی با مقدار ثابت 1 در نظر گرفته و وزن W0 را به آن اختصاص میدهیم.</p>
<p>آموزش پرسپترون<br />
چگونه وزنهای یک پرسپترون واحد را یاد بگیریم به نحوی که پرسپترون برای مثالهای آموزشی مقادیر صحیح را ایجاد نماید؟<br />
دو راه مختلف :<br />
قانون پرسپترون<br />
قانون دلتا</p>
<p>آموزش پرسپترون<br />
الگوریتم یادگیری پرسپترون<br />
مقادیری تصادفی به وزنها نسبت میدهیم<br />
پریسپترون را به تک تک مثالهای آموزشی اعمال میکنیم. اگر مثال غلط ارزیابی شود مقادیر وزنهای پرسپترون را تصحیح میکنیم.<br />
آیا تمامی مثالهای آموزشی درست ارزیابی میشوند:<br />
بله  پایان الگوریتم<br />
خیربه مرحله 2 برمیگردیم</p>
<p>قانون پرسپترون<br />
برای یک مثال آموزشیX = (x1, x2, …, xn) در هر مرحله وزنها بر اساس قانون پرسپترون بصورت زیر تغییر میکند:<br />
wi = wi + Δwi</p>
<p>که در آن</p>
<p dir="ltr">Δwi = η ( t – o ) xi<br />
t: target output<br />
o: output generated by the perceptron<br />
η: constant called the learning rate (e.g., 0.1)</p>
<p>&nbsp;</p>
<p>اثبات شده است که برای یک مجموعه مثال جداپذیرخطی این روش همگرا شده و پرسپترون قادر به جدا سازی صحیح مثالها خواهد شد.</p>
<p>قانون دلتا Delta Rule<br />
وقتی که مثالها بصورت خطی جداپذیر نباشند قانون پرسپترون همگرا نخواهد شد. برای غلبه بر این مشکل از قانون دلتا استفاده میشود.<br />
ایده اصلی این قانون استفاده از gradient descent برای جستجو در فضای فرضیه وزنهای ممکن میباشد. این قانون پایه روش Backpropagation است که برای آموزش شبکه با چندین نرون به هم متصل بکار میرود.<br />
همچنین این روش پایه ای برای انواع الگوریتمهای یادگیری است که باید فضای فرضیه ای شامل فرضیه های مختلف پیوسته را جستجو کنند.</p>
<p>برای درک بهتر این روش آنرا به یک پرسپترون فاقد حد آستانه اعمال میکنیم. در انجا لازم است ابتدا تعریفی برای خطا ی آموزش ارائه شود. یک تعریف متداول این چنین است:<br />
E = ½ Σi (ti – oi) 2</p>
<p>که این مجموع برای تمام مثالهای آموزشی انجام میشود.</p>
<p>الگوریتم gradient descent<br />
با توجه به نحوه تعریف E سطح خطا بصورت یک سهمی خواهد بود. ما بدنبال وزنهائی هستیم که حداقل خطا را داشته باشند . الگوریتم gradient descent در فضای وزنها بدنبال برداری میگردد که خطا را حداقل کند. این الگوریتم از یک مقدار دلبخواه برای بردار وزن شروع کرده و در هر مرحله وزنها را طوری تغییر میدهد که در جهت شیب کاهشی منحنی فوق خطا کاهش داده شود.</p>
<p>بدست آوردن قانون gradient descent<br />
ایده اصلی: گرادیان همواره در جهت افزایش شیب E عمل میکند.<br />
گرادیان E نسبت به بردار وزن w بصورت زیر تعریف میشود:</p>
<p>E (W) = [ E’/w0, E’/w1, …, E’/wn]<br />
که در آن E (W) یک بردارو E’مشتق جزئی نسبت به هر وزن میباشد.</p>
<p>برای یک مثال آموزشیX = (x1, x2, …, xn) در هر مرحله وزنها بر اساس قانون دلتا بصورت زیر تغییر میکند:<br />
wi = wi + Δwi</p>
<p>Where Δwi = -η E’(W)/wi</p>
<p>η: learning rate (e.g., 0.1)<br />
علامت منفی نشان دهنده حرکت در جهت کاهش شیب است.</p>
<p>محاسبه گرادیان<br />
با مشتق گیری جزئی از رابطه خطا میتوان بسادگی گرادیان را محاسبه نمود:<br />
E’(W)/ wi = Σi (ti – Oi) (-xi)<br />
لذا وزنها طبق رابطه زیر تغییر خواهند نمود.<br />
Δwi = η Σi (ti – oi) xi</p>
<p>خلاصه یادگیری قانون دلتا<br />
الگوریتم یادگیری با استفاده از قانون دلتا بصورت زیر میباشد.<br />
به وزنها مقدار تصادفی نسبت دهید<br />
تا رسیدن به شرایط توقف مراحل زیر را ادامه دهید<br />
هر وزن wi را با مقدار صفر عدد دهی اولیه کنید.<br />
برای هر مثال: وزن wi را بصورت زیر تغییر دهید:<br />
wi = wi + η (t – o) xi<br />
مقدار wi را بصورت زیر تغییر دهید:<br />
wi = wi + wi<br />
تا خطا بسیار کوچک شود</p>
<p>مشکلات روش gradient descent<br />
ممکن است همگرا شدن به یک مقدار مینیمم زمان زیادی لازم داشته باشد.<br />
اگر در سطح خطا چندین مینیمم محلی وجود داشته باشد تضمینی وجود ندارد که الگوریتم مینیمم مطلق را پیدا بکند.</p>
<p>در ضمن این روش وقتی قابل استفاده است که:<br />
فضای فرضیه دارای فرضیه های پارامتریک پیوسته باشد.<br />
رابطه خطا قابل مشتق گیری باشد</p>
<p>تقریب افزایشی gradient descent<br />
میتوان بجای تغییر وزنها پس از مشاهده همه مثالها، آنها را بازا هر مثال مشاهده شده تغییر داد. در این حالت وزنها بصورت افزایشی incremental تغییر میکنند. این روش را stochastic gradient descent نیزمینامند.<br />
wi = η (t-o) xi<br />
در بعضی موارد تغییر افزایشی وزنها میتواند از بروز مینیمم محلی جلوگیری کند. روش استاندارد نیاز به محاسبات بیشتری دارد درعوض میتواند طول step بزرگتری هم داشته باشد.</p>
<p>مقایسه آموزش یکجا و افزایشی<br />
آموزش افزایشی (Online learning)</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2015/01/mm5.jpg"><img fetchpriority="high" decoding="async" class="aligncenter size-full wp-image-1435" src="https://matlab1.ir/wp-content/uploads/2015/01/mm5.jpg" alt="mm5" width="322" height="323" srcset="https://matlab1.ir/wp-content/uploads/2015/01/mm5.jpg 322w, https://matlab1.ir/wp-content/uploads/2015/01/mm5-150x150.jpg 150w, https://matlab1.ir/wp-content/uploads/2015/01/mm5-300x300.jpg 300w, https://matlab1.ir/wp-content/uploads/2015/01/mm5-140x140.jpg 140w, https://matlab1.ir/wp-content/uploads/2015/01/mm5-50x50.jpg 50w, https://matlab1.ir/wp-content/uploads/2015/01/mm5-110x110.jpg 110w" sizes="(max-width: 322px) 100vw, 322px" /></a></p>
<p>آموزش یکجا (Batch learning)</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2015/01/mm6.jpg"><img decoding="async" class="aligncenter size-full wp-image-1434" src="https://matlab1.ir/wp-content/uploads/2015/01/mm6.jpg" alt="mm6" width="319" height="295" srcset="https://matlab1.ir/wp-content/uploads/2015/01/mm6.jpg 319w, https://matlab1.ir/wp-content/uploads/2015/01/mm6-300x277.jpg 300w" sizes="(max-width: 319px) 100vw, 319px" /></a></p>
<p>شبکه های چند لایه<br />
بر خلاف پرسپترونها شبکه های چند لایه میتوانند برای یادگیری مسائل غیر خطی و همچنین مسائلی با تصمیم گیری های متعدد بکار روند.</p>
<p>یک سلول واحد<br />
برای اینکه بتوانیم فضای تصمیم گیری را بصورت غیر خطی از هم جدا بکنیم، لازم است تا هر سلول واحد را بصورت یک تابع غیر خطی تعریف نمائیم. مثالی از چنین سلولی میتواند یک واحد سیگموئید باشد:</p>
<p>تابع سیگموئید<br />
خروجی این سلول واحد را بصورت زیر میتوان بیان نمود:</p>
<p>تابع σ تابع سیگموئید یا لجستیک نامیده میشود. این تابع دارای خاصیت زیر است:</p>
<p>الگوریتم Back propagation<br />
برای یادگیری وزن های یک شبکه چند لایه از روش Back Propagation استفاده میشود. در این روش با استفاده از gradient descent سعی میشود تا مربع خطای بین خروجی های شبکه و تابع هدف مینیمم شود.<br />
خطا بصورت زیر تعریف میشود:</p>
<p>مراد ازoutputs خروجیهای مجموعه واحد های لایه خروجی و tkdو okd مقدار هدف و خروجی متناظر با k امین واحد خروجی و مثال آموزشی d است.</p>
<p>الگوریتم Back propagation<br />
فضای فرضیه مورد جستجو در این روش عبارت است از فضای بزرگی که توسط همه مقادیر ممکن برای وزنها تعریف میشود. روش gradient descent سعی میکند تا با مینیمم کردن خطا به فرضیه مناسبی دست پیدا کند. اما تضمینی برای اینکه این الگوریتم به مینیمم مطلق برسد وجود ندارد.</p>
<p>الگوریتم BP<br />
شبکه ای با ninگره ورودی، nhidden گره مخفی، و nout گره خروجی ایجاد کنید.<br />
همه وزنها را با یک مقدار تصادفی کوچک عدد دهی کنید.<br />
تا رسیدن به شرط پایانی ) کوچک شدن خطا( مراحل زیر را انجام دهید:<br />
برای هر xمتعلق به مثالهای آموزشی:<br />
مثال X را به سمت جلو در شبکه انتشار دهید<br />
خطای E را به سمت عقب در شبکه انتشار دهید.</p>
<p>هر مثال آموزشی بصورت یک زوج (x,t) ارائه میشود که بردار x مقادیر ورودی و بردار t مقادیر هدف برای خروجی شبکه را تعیین میکنند.</p>
<p>انتشار به سمت جلو<br />
برای هر مثال X مقدار خروجی هر واحد را محاسبه کنید تا به گره های خروجی برسید.</p>
<p>انتشار به سمت عقب<br />
برای هر واحد خروجی جمله خطا را بصورت زیر محاسبه کنید: δk = Ok (1-Ok)(tk – Ok)<br />
برای هر واحد مخفی جمله خطا را بصورت زیر محاسبه کنید: δh = Oh (1-Oh) Σk Wkh δk<br />
مقدارهر وزن را بصورت زیر تغییر دهید:<br />
Wji = Wji + ΔWji<br />
که در آن :<br />
ΔWji = η δj Xji</p>
<p>ηعبارت است از نرخ یادگیری</p>
<p>شرط خاتمه<br />
معمولا الگوریتم BP پیش از خاتمه هزاران بار با استفاده همان داده های آموزشی تکرار میگردد شروط مختلفی را میتوان برای خاتمه الگوریتم بکار برد:<br />
توقف بعد از تکرار به دفعات معین<br />
توقف وقتی که خطا از یک مقدار تعیین شده کمتر شود.<br />
توقف وقتی که خطا در مثالهای مجموعه تائید از قاعده خاصی پیروی نماید.<br />
اگر دفعات تکرار کم باشد خطا خواهیم داشت و اگر زیاد باشد مسئله Overfitting رخ خواهد داد.</p>
<p>.</p>
<p>منحنی یادگیری</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2015/01/mm7.jpg"><img decoding="async" class="aligncenter size-full wp-image-1433" src="https://matlab1.ir/wp-content/uploads/2015/01/mm7.jpg" alt="mm7" width="541" height="376" srcset="https://matlab1.ir/wp-content/uploads/2015/01/mm7.jpg 541w, https://matlab1.ir/wp-content/uploads/2015/01/mm7-300x208.jpg 300w, https://matlab1.ir/wp-content/uploads/2015/01/mm7-200x140.jpg 200w, https://matlab1.ir/wp-content/uploads/2015/01/mm7-530x368.jpg 530w" sizes="(max-width: 541px) 100vw, 541px" /></a></p>
<p>.</p>
<p>مرور الگوریتم BP<br />
این الگوریتم یک جستجوی gradient descent در فضای وزنها انجام میدهد.<br />
ممکن است در یک مینیمم محلی گیر بیافتد<br />
در عمل بسیار موثر بوده است</p>
<p>.</p>
<p>برای پرهیز از مینیمم محلی روشهای مختلفی وجود دارد:<br />
افزودن ممنتم<br />
استفاده از stochastic gradient descent<br />
استفاده ازشبکه های مختلف با مقادیر متفاوتی برای وزنهای اولیه</p>
<p>.</p>
<p>افزودن ممنتم<br />
میتوان قانون تغییر وزنها را طوری در نظر گرفت که تغییر وزن در تکرار n ام تا حدی به اندازه تغییروزن در تکرار قبلی بستگی داشته باشد.<br />
ΔWji (n) = η δj Xji + αΔWji (n-1)</p>
<p>که در آن مقدارممنتم α بصورت 0 &lt;= α &lt;= 1 میباشد.<br />
افزودن ممنتم باعث میشود تا با حرکت در مسیر قبلی در سطح خطا:<br />
از گیر افتادن در مینیم محلی پرهیز شود<br />
از قرارگرفتن در سطوح صاف پرهیز شود<br />
با افزایش تدریجی مقدار پله تغییرات، سرعت جستجو افزایش یابد.</p>
<p>.</p>
<p>قدرت نمایش توابع<br />
گرچه قدرت نمایش توابع به توسط یک شبکه feedforward بسته به عمق و گستردگی شبکه دارد، با این وجود موارد زیر را میتوان به صورت قوانین کلی بیان نمود:<br />
توابع بولی: هر تابع بولی را میتوان توسط یک شبکه دو لایه پیاده سازی نمود.<br />
توابع پیوسته: هر تابع پیوسته محدود را میتوان توسط یک شبکه دو لایه تقریب زد. تئوری مربوطه در مورد شبکه هائی که از تابع سیگموئید در لایه پنهان و لایه خطی در شبکه خروجی استفاده میکنند صادق است.<br />
توابع دلخواه: هر تابع دلخواه را میتوان با یک شبکه سه لایه تا حد قابل قبولی تفریب زد.<br />
با این وجود باید درنظر داست که فضای فرضیه جستجو شده توسط روش gradient deescent ممکن است در برگیرنده تمام مقادیر ممکن وزنها نباشد.</p>
<p>.</p>
<p>فضای فرضیه و بایاس استقرا<br />
فضای فرضیه مورد جستجو را میتوان بصورت یک فضای فرضیه اقلیدسی n بعدی از وزنهای شبکه در نظر گرفت )کهn تعداد وزنهاست(<br />
این فضای فرضیه بر خلاف فضای فرضیه درخت تصمیم یک فضای پیوسته است.<br />
بایاس استقرا این روش را میتوان بصورت زیر بیان کرد:<br />
“smooth interpolation between data points”<br />
به این معنا که الگوریتم BP سعی میکند تا نقاطی را که به هم نزدیکتر هستند در یک دسته بندی قرار دهد.</p>
<p>.</p>
<p>قدرت نمایش لایه پنهان<br />
یکی از خواص BP این است که میتواند در لایه های پنهان شبکه ویژگیهای نا آشکاری از داده ورودی نشان دهد.<br />
برای مثال شبکه 8x3x8 زیر طوری آموزش داده میشود که مقدارهرمثال ورودی را عینا در خروجی بوجو د آورد )تابع f(x)=x را یاد بگیرد(. ساختار خاص این شبکه باعث میشود تا واحد های لایه وسط ویژگی های مقادیر ورودی را به نحوی کد بندی کنند که لایه خروحی بتواند از آنان برای نمایش مجدد داده ها استفاده نماید.</p>
<p>.</p>
<p>قدرت تعمیم و overfitting<br />
شرط پایان الگوریتم BP چیست؟<br />
یک انتخاب این است که الگوریتم را آنقدر ادامه دهیم تا خطا از مقدار معینی کمتر شود. این امر میتواند منجر به overfitting شود.</p>
<p>&nbsp;</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2015/01/mm8.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1432" src="https://matlab1.ir/wp-content/uploads/2015/01/mm8.jpg" alt="mm8" width="596" height="231" srcset="https://matlab1.ir/wp-content/uploads/2015/01/mm8.jpg 596w, https://matlab1.ir/wp-content/uploads/2015/01/mm8-300x116.jpg 300w, https://matlab1.ir/wp-content/uploads/2015/01/mm8-530x205.jpg 530w" sizes="auto, (max-width: 596px) 100vw, 596px" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;<br />
دلایل رخ دادن overfitting<br />
overfitting ناشی از تنظیم وزنها برای در نظر گرفتن مثالهای نادری است که ممکن است با توزیع کلی داده ها مطابقت نداشته باشند. تعداد زیاد وزنهای یک شبکه عصبی باعث میشود تا شبکه درجه آزادی زیادی برای انطباق با این مثالها داشته باشد.<br />
با افزایش تعداد تکرار، پیچیدگی فضای فرضیه یادگرفته شده توسط الگوریتم بیشتر و بیشتر میشود تا شبکه بتواند نویز و مثالهای نادر موجود در مجموعه آموزش را بدرستی ارزیابی نماید.</p>
<p>&nbsp;</p>
<p>راه حل<br />
استفاده از یک مجموعه تائید Vallidation و توقف یادگیری هنگامی که خطا در این مجموعه به اندازه کافی کوچک میشود.<br />
بایاس کردن شبکه برای فضاهای فرضیه ساده تر: یک راه میتواند استفاده از weight decayباشد که در آن مقدار وزنها در هر بارتکرار باندازه خیلی کمی کاهش داده میشود.<br />
k-fold cross validation وقتی که تعداد مثالهای آموزشی کم باشد میتوان m داده آموزشی را به K دسته تقسیم بندی نموده و آزمایش را به تعداد k دفعه تکرار نمود. در هر دفعه یکی از دسته ها بعنوان مجموعه تست و بقیه بعنوان مجموعه آموزشی استفاده خواهند شد. تصمیم گیری بر اساس میانگین نتایج انجام میشود.</p>
<p>&nbsp;</p>
<p>روشهای دیگر</p>
<p>راه های بسیار متنوعی برای ایجاد شبکه های جدید وجود دارد از جمله:<br />
استفاده از تعاریف دیگری برای تابع خطا<br />
استفاده از روشهای دیگری برای کاهش خطا در حین یادگیری<br />
Hybrid Global Learning<br />
Simulated Annealing<br />
Genetic Algorithms<br />
استفاده از توابع دیگری در واحدها<br />
Radial Basis Functions<br />
استفاده از ساختار های دیگری برای شبکه<br />
Recurrent Network</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table style="height: 13px;" width="410">
<tbody>
<tr>
<td><a href="http://iran-matlab.ir/?product=%D9%81%DB%8C%D9%84%D9%85-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-%D9%85%D8%A8%D8%A7%D9%86%DB%8C-%D8%B4%D8%A8%DA%A9%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C-%D8%B9%D8%B5%D8%A8%DB%8C" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1256" src="http://iran-matlab.ir/wp-content/uploads/2015/10/Artifical-Neural-Network-tutorial-introduction-training-movie.png" alt="Artifical Neural Network tutorial introduction training movie" width="300" height="300" /></a></td>
<td><a href="http://iran-matlab.ir/?product=%d9%81%db%8c%d9%84%d9%85-%d8%a2%d9%85%d9%88%d8%b2%d8%b4%db%8c-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8%db%8c" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1260" src="http://iran-matlab.ir/wp-content/uploads/2015/10/MATLAB-programming-for-Artifical-Neural-Network-tutorial-training-movie.png" alt="MATLAB programming for Artifical Neural Network tutorial training movie" width="300" height="300" /></a></td>
</tr>
</tbody>
</table>
<table style="height: 13px;" width="410">
<tbody>
<tr>
<td><a href="http://iran-matlab.ir/?product=%d9%81%db%8c%d9%84%d9%85-%d8%a2%d9%85%d9%88%d8%b2%d8%b4%db%8c-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c-%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8%db%8c-2" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1278" src="http://iran-matlab.ir/wp-content/uploads/2015/10/MATLAB-price-prediction-for-Neural-Network-tutorial-training-movie.png" alt="MATLAB price prediction for Neural Network tutorial training movie" width="300" height="300" /></a></td>
<td><a href="http://iran-matlab.ir/?product=%d9%81%db%8c%d9%84%d9%85-%d8%a2%d9%85%d9%88%d8%b2%d8%b4%db%8c-%d8%af%d8%b3%d8%aa%d9%87-%d8%a8%d9%86%d8%af%db%8c-%d8%a8%d8%a7-%d8%b4%d8%a8%da%a9%d9%87%e2%80%8c%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1289" src="http://iran-matlab.ir/wp-content/uploads/2015/10/MATLAB-classification-for-Neural-Network-tutorial-training-movie.png" alt="MATLAB classification for Neural Network tutorial training movie" width="300" height="300" /></a></td>
</tr>
</tbody>
</table>
<table style="height: 13px;" width="410">
<tbody>
<tr>
<td><a href="http://iran-matlab.ir/?product=%d9%81%db%8c%d9%84%d9%85-%d8%a2%d9%85%d9%88%d8%b2%d8%b4%db%8c-%d9%be%db%8c%d8%b4-%d8%a8%db%8c%d9%86%db%8c-%d8%b3%d8%b1%db%8c%d9%87%d8%a7%db%8c-%d8%b2%d9%85%d8%a7%d9%86%db%8c-%d8%a8%d8%a7-%d8%b4%d8%a8" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1291" src="http://iran-matlab.ir/wp-content/uploads/2015/10/MATLAB-times-series-prediction-for-Neural-Network-tutorial-training-movie.png" alt="MATLAB times series prediction for Neural Network tutorial training movie" width="300" height="300" /></a></td>
<td><a href="http://iran-matlab.ir/?product=%d9%81%db%8c%d9%84%d9%85-%d8%a2%d9%85%d9%88%d8%b2%d8%b4%db%8c-%da%a9%d8%a7%d8%b1%d8%a8%d8%b1%d8%af-%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8%db%8c-%d8%af%d8%b1-%d9%be%d8%b1%d8%af" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1293" src="http://iran-matlab.ir/wp-content/uploads/2015/10/MATLAB-face-detection-Neural-Network-tutorial-training-movie.png" alt="MATLAB face detection Neural Network tutorial training movie" width="300" height="300" /></a></td>
</tr>
</tbody>
</table>
<table style="height: 13px;" width="410">
<tbody>
<tr>
<td><a href="http://iran-matlab.ir/?product=%d9%81%db%8c%d9%84%d9%85-%d8%a2%d9%85%d9%88%d8%b2%d8%b4%db%8c-%d8%aa%d9%86%d8%b8%db%8c%d9%85%d8%a7%d8%aa-%d9%be%db%8c%d8%b4%d8%b1%d9%81%d8%aa%d9%87-%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1296" src="http://iran-matlab.ir/wp-content/uploads/2015/10/MATLAB-advanced-setting-Neural-Network-tutorial-training-movie.png" alt="MATLAB advanced setting Neural Network tutorial training movie" width="300" height="300" /></a></td>
<td></td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>نوشته <a href="https://matlab1.ir/%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8%db%8c-%d9%85%d8%b5%d9%86%d9%88%d8%b9%db%8c/">شبکه های عصبی مصنوعی</a> اولین بار در <a href="https://matlab1.ir">ايران متلب</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matlab1.ir/%d8%b4%d8%a8%da%a9%d9%87-%d9%87%d8%a7%db%8c-%d8%b9%d8%b5%d8%a8%db%8c-%d9%85%d8%b5%d9%86%d9%88%d8%b9%db%8c/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>فیلترهای تطبیقی مبتنی بر LMS</title>
		<link>https://matlab1.ir/%d9%81%db%8c%d9%84%d8%aa%d8%b1%d9%87%d8%a7%db%8c-%d8%aa%d8%b7%d8%a8%db%8c%d9%82%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-lms/</link>
					<comments>https://matlab1.ir/%d9%81%db%8c%d9%84%d8%aa%d8%b1%d9%87%d8%a7%db%8c-%d8%aa%d8%b7%d8%a8%db%8c%d9%82%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-lms/#comments</comments>
		
		<dc:creator><![CDATA[ایران متلب]]></dc:creator>
		<pubDate>Tue, 23 Dec 2014 14:04:29 +0000</pubDate>
				<category><![CDATA[آموزش]]></category>
		<category><![CDATA[FIR]]></category>
		<category><![CDATA[least mean squares]]></category>
		<category><![CDATA[LMS]]></category>
		<category><![CDATA[recursive least squares]]></category>
		<category><![CDATA[self-learning]]></category>
		<category><![CDATA[stochastic gradient descent]]></category>
		<category><![CDATA[روش بازگشتی حداقل مربعات]]></category>
		<category><![CDATA[روش بلوک چند-تأخیری حوزه فرکانس]]></category>
		<category><![CDATA[روش حداقل میانگین مربعات]]></category>
		<category><![CDATA[طراحی فیلترها]]></category>
		<category><![CDATA[فیلتر]]></category>
		<category><![CDATA[فیلترها در متلب]]></category>
		<category><![CDATA[فیلترهای با پاسخ ضربه با طول نامحدود]]></category>
		<category><![CDATA[فیلترهای تطبیقی]]></category>
		<category><![CDATA[فیلترهای دیجیتال]]></category>
		<guid isPermaLink="false">http://am19.siteground.biz/~matlab18/matlab1.ir/?p=1147</guid>

					<description><![CDATA[<p>فیلترهای تطبیقی فیلتر تطبیقی بلوکی محاسباتی است که تلاش می‌کند تا بصورت بی‌درنگ[2] و تکرار شونده[3] نسبت دو سیگنال را به هم مدل نماید. این فیلترها گاه به صورت تعدادی دستورالعل بر روی یک پردازنده محاسباتی مثل میکروکنترلر‌ها و یا DSP ها پیاده‌سازی می‌شوند و گاهی هم به صورت بلوک‌های منطقی بر روی FPGA ها [&#8230;]</p>
<p>نوشته <a href="https://matlab1.ir/%d9%81%db%8c%d9%84%d8%aa%d8%b1%d9%87%d8%a7%db%8c-%d8%aa%d8%b7%d8%a8%db%8c%d9%82%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-lms/">فیلترهای تطبیقی مبتنی بر LMS</a> اولین بار در <a href="https://matlab1.ir">ايران متلب</a>. پدیدار شد.</p>
]]></description>
										<content:encoded><![CDATA[<h1>فیلترهای تطبیقی</h1>
<p>فیلتر تطبیقی بلوکی محاسباتی است که تلاش می‌کند تا بصورت بی‌درنگ[2] و تکرار شونده[3] نسبت دو سیگنال را به هم مدل نماید. این فیلترها گاه به صورت تعدادی دستورالعل بر روی یک پردازنده محاسباتی مثل میکروکنترلر‌ها و یا DSP ها پیاده‌سازی می‌شوند و گاهی هم به صورت بلوک‌های منطقی بر روی FPGA ها و یا قطعات مجتمع VLSI دیده می‌شوند.</p>
<p>یک فیلتر تطبیقی از چهار بخش اصلی تشکیل می‌شود:</p>
<ol>
<li><strong>سیگنال‌ها</strong>یی که توسط فیلتر مورد پردازش قرار می‌گیرند.</li>
<li><strong>ساختار</strong> فیلتر که رابطۀ بین ورودی و خروجی آن را تعیین می‌کند.</li>
<li><strong>پارامتر‌های </strong>فیلتر که مرتباً برای تطبیق با سیستم تغییر می‌کنند.</li>
<li><strong>الگوریتم تطبیقی </strong>که شیوۀ تغییر پارامترها را با توجه به شرایط سیستم توصیف می‌نماید.</li>
</ol>
<h2>مقدمه‌ای بر فیلترهای دیجیتال</h2>
<p>سالیان زیادی است که فیلترهای دیجیتال به متداول‌ترین کاربرد پردازنده‌های سیگنال دیجیتال[4] و کامپیوترها تبدیل شده‌اند. مهم‌ترین مزیت فیلترهای دیجیتال بر فیلترهای آنالوگ آن است که کد نوشته شده و یا بلوک منطقی ساخته شده برای فیلتر به راحتی قابل تغییر است و می‌توان ضرایب فیلتر را طوری تغییر داد که پاسخ فرکانسی و بهره جدیدی از فیلتر بدست آوریم. همچنین در حالی که فیلتر درون سیستم در حال کار است می‌توان ضرایب و خصوصیات آن را تغییر داد و به یک فیلتر تطبیقی دست پیدا کرد.</p>
<p>همانند فیلترهای آنالوگ، طراحی فیلترهای دیجیتال در حوزۀ فرکانس به صورت زیر قابل انجام است:</p>
<ul>
<li>خصوصیات و ویژگی‌های فیلتر را به صورت یک تابع تبدیل در می‌آوریم.</li>
<li>پس از اینکه تابع تبدیل فیلتر بدست آمد، می‌توان آنرا با استفاده از یک روش‌های تکرارشونده[5] و یا تکرار نشونده[6] پیاده‌سازی نمود.</li>
</ul>
<p>برای یک فیلتر تکرار شوند، رابطۀ بین ورودی و خروجی به صورت زیر بیان میشود که در آن f(n) دنبالۀ ورودی و g(n) دنبالۀ خروجی فیلتر می‌باشد.</p>
<p>&nbsp;</p>
<p>[1] <a href="https://en.wikipedia.org/wiki/Adaptive_filter" target="_blank" rel="noopener noreferrer">adaptive filter</a></p>
<p>[2] real-time</p>
<p>[3] iterative</p>
<p>[4] <a href="https://en.wikipedia.org/wiki/Digital_signal_processor" target="_blank" rel="noopener noreferrer">digital signal processors</a></p>
<p>[5] recursive</p>
<p>[6] non-recursive</p>
<p>&nbsp;</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2014/12/w1.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1148" src="https://matlab1.ir/wp-content/uploads/2014/12/w1.jpg" alt="w1" width="617" height="57" srcset="https://matlab1.ir/wp-content/uploads/2014/12/w1.jpg 617w, https://matlab1.ir/wp-content/uploads/2014/12/w1-300x27.jpg 300w, https://matlab1.ir/wp-content/uploads/2014/12/w1-530x48.jpg 530w" sizes="auto, (max-width: 617px) 100vw, 617px" /></a></p>
<p>پس بنابراین خروجی فعلی نمونۀ g(n) تابعی خواهد بود از ورودی‌های گذشته، فعلی و آینده.</p>
<p>اگر فیلتر غیر تکرار شونده باشد خواهیم داشت:</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2014/12/w2.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1149" src="https://matlab1.ir/wp-content/uploads/2014/12/w2.jpg" alt="w2" width="390" height="41" srcset="https://matlab1.ir/wp-content/uploads/2014/12/w2.jpg 390w, https://matlab1.ir/wp-content/uploads/2014/12/w2-300x31.jpg 300w" sizes="auto, (max-width: 390px) 100vw, 390px" /></a></p>
<p>&nbsp;</p>
<p>که این رابطه بدین معناست که خروجی فعلی نمونۀ g(n) تنها تابعی خواهد بود از ورودی‌های گذشته و ورودی‌های فعلی.</p>
<p>روش دیگری برای طبقه بندی انواع فیلتر دیجیتال نیز موجود است. اگر فیلتر دارای پاسخ ضربه با مدت محدود باشد، این فیلتر [1]FIR نامیده میشود. این فیلتر می‌تواند تکرارشونده و یا غیر تکرارشونده باشد اما معمولاً همواره این نوع فیلترها به صورت غیر تکرارشونده مورد استفاده قرار می‌گیرند. به همین دلیل است که معادلۀ دیفرنس این فیلتر به صورت زیر بیان می‌گردد:</p>
<p>[1] Finite-duration Impulse Response</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2014/12/w3.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1150" src="https://matlab1.ir/wp-content/uploads/2014/12/w3.jpg" alt="w3" width="227" height="87" /></a></p>
<p>&nbsp;</p>
<p>یکی از ویژگی‌های مهم فیلتر FIR آن است که لزوماً پایدار است. به دلیل اینکه تمامی قطب‌های تابع تبدیل آن در z=0 هستند که درون دایرۀ واحد قرار می‌گیرند.</p>
<p>حالت عمومی‌تر معادلۀ دیفرنس برای یک فیلتر دیجیتال به صورت زیر است:</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2014/12/w4.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1151" src="https://matlab1.ir/wp-content/uploads/2014/12/w4.jpg" alt="w4" width="215" height="81" /></a></p>
<p>از تابع تبدیل بالا مشخص است که طول نامحدود دارد، به همین دلیل به این گونه از فیلترها، فیلترهای با پاسخ ضربه با طول نامحدود[1] یا IIR می‌گویند.</p>
<p>ذکر این نکته اهمیت دارد که بیان FIR و یا IIR بودن فیلتر، نوع آن را مشخص می‌کند، در حالی که تکرارشونده و یا غیر‌تکرار شونده بودن آن، به روش تحقق[2] فیلتر اشاره مینماید. البته، معمولاً در فیلترهای دیحیتال، غیر تکرار شونده و FIR بجای هم  و تکرار شونده و IIR هم به جای هم استفاده میشوند.</p>
<p>&nbsp;</p>
<p>[1] Infinite Impulse Response</p>
<p>[2] realization method</p>
<p>&nbsp;</p>
<h2>پیاده‌سازی فیلترهای دیجیتال</h2>
<p>ماهیت فیلترهای دیجیتال به گونه‌ای است که پیاده سازی آن بر روی پردازنده‌ها به سادگی قابل انجام است. برای مثال خروجی یک فیلتر FIR مرتبه دوم به صورت زیر بیان می‌شود:</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2014/12/w5.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1153" src="https://matlab1.ir/wp-content/uploads/2014/12/w5.jpg" alt="w5" width="423" height="46" srcset="https://matlab1.ir/wp-content/uploads/2014/12/w5.jpg 423w, https://matlab1.ir/wp-content/uploads/2014/12/w5-300x32.jpg 300w" sizes="auto, (max-width: 423px) 100vw, 423px" /></a></p>
<p>به طریق مشابه، برای یک فیلتر FIR به طور کلی خواهیم داشت:</p>
<p style="text-align: center;"><a href="https://matlab1.ir/wp-content/uploads/2014/12/w6.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1155" src="https://matlab1.ir/wp-content/uploads/2014/12/w6.jpg" alt="w6" width="233" height="95" /></a></p>
<p>که در اینجا P مرتبه فیلتر را نشان می‌دهد.</p>
<p>این فیلتر از تعدادی ضریب و مقادیر ورودی تشکیل شده است. برای محاسبۀ خروجی فیلتر در هر زمان، کافی است که مقادیر ورودی را در ضرایب مربوطه ضرب کرده و مقادیر بدست آمده را با هم جمع کنیم. بهترین روش برای نگهداری اطلاعات جهت شیفت دادن در هر سیکل نمونه‌برداری، استفاده از بافر مدور[1] است. به نحوی که شروع اطلاعات با یک نشانگر[2] مشخص می‌گردد و اطلاعات قبلی به ترتیب از آن نقطه در جهت عقربه‌های ساعت بار می‌شوند. وقتی یک نمونۀ جدید دریافت میشود، در محل x(n) قرار می‌گیرد و زیرروال فیلتر از همان x(n) آغاز میشود و با ضرب مقادیر ورودی در ضرایب مربوط به هر کدام ادامه پیدا میکند. پس از محاسبۀ خروجی، نشانگر در جهت عقربه‌های ساعت یک واحد جابجا شده و سیستم منتظر ورودی بعدی می‌ماند. همچنین همواره قدیمی‌ترین داده ورودی، پس از محاسبۀ هر خروجی از زنجیرۀ تأخیر بیرون انداخته میشود. با این توصیفات، این بافر مدوری که از آن صحبت می‌کنیم، در واقع یک FIFO[3] است.</p>
<p>بافر مدور در حالت ایده‌آل قابل پیاده‌سازی است. چرا که هر پردازنده‌ای فضای حافظۀ خطی دارد. یعنی از آدرس 0 شروع شده و به بالاترین آدرس مثلاً XXXX میرسد. بنابراین اگر بخواهیم داده‌ای را به انتهای حافظه انتقال دهیم، یا با خطا روبرو میشویم و یا اطلاعاتی را از دست خواهیم داد. پس برای پیاده سازی آدرس دهی خطی و یا همان  بافر مدور از جابجایی داده‌ها استفاده میکنیم.</p>
<p>&nbsp;</p>
<p>[1] circular buffer</p>
<p>[2] pointer</p>
<p>[3] First In, First Out</p>
<p>&nbsp;</p>
<h2>مقدمه‌ای در مورد فیلترهای تطبیقی</h2>
<p>فیلترهای تطبیقی در مواردی بیشترین استفاده را دارد که پارامترهای سیستم و یا وضعیت سیگنال‌ها در حال تغییر هستند و فیلتر باید طوری تنظیم شود که ای تغییرات را جبران نماید. در فیلترهای FIR و IIR معمولی فرض بر این است که پارامترهایی از فرآیند که ویژگی‌های فیلتر را تعیین می‌نمایند، معین هستند. ممکن است که پارامترهای فیلتر با زمان هم تغییر پیدا کنند، ولی ماهیت این تغییرات قابل پیش بینی است. در بسیاری از مسائل عملی در مورد پارامتهای سیستم عدم قطعیت، به دلیل تأثیر سیگنال‌های غیر قابل پیش‌بینی و همچنین عدم وجود اطلاعات کافی در مورد سیستم وجود دارد. در این موارد برخی از پارامترها باید در طول زمان تغییر پیدا کنند، ولی طبیعت این تغییرات غیرقابل پیش‌بینی است.‍ در این‌گونه موارد، وجود فیلتری مطلوب است تا از نوعی خود-فراگیری[1] بهره ببرد و بتواند خود را با شرایط فعلی سیستم وفق دهد.</p>
<p>ضرایب یک فیلتر تطبیقی طوری تغییر پیدا می‌کند تا تغییرات در سیگنال‌های ورودی، خروجی و پارامترهای سیستم را جبران نماید. به جای اینکه این‌گونه فیلترها صلب باشند، در عوض میتوانند ویژگی‌های سیگنالی را فرا گیرند و تغییرات آهسته را دنبال کنند. فیلتر تطبیقی در مواردی که مشخصۀ یک سیگنال معین نیست و یا ویژگی‌ها تغییر می‌کنند، بیشترین استفاده را خواهد داشت.</p>
<p>[1] self-learning</p>
<p><a href="https://matlab1.ir/wp-content/uploads/2014/12/w7.jpg"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-1158" src="https://matlab1.ir/wp-content/uploads/2014/12/w7.jpg" alt="w7" width="378" height="146" srcset="https://matlab1.ir/wp-content/uploads/2014/12/w7.jpg 378w, https://matlab1.ir/wp-content/uploads/2014/12/w7-300x115.jpg 300w" sizes="auto, (max-width: 378px) 100vw, 378px" /></a></p>
<p>شکل بالا ساختار یک فیلتر تطبیقی ساده را نمایش می‌دهد که در آن خروجی فیلتر یعنی سیگنال y با سیگنال مطلوب d مقایسه می‌شود و سیگنال خطا را می‌سازد که به فیلتر تطبیقی بازخورد پیدا کرده و ضرایب آن را به روز می‌نماید. روش‌های گوناگونی برای پیاده‌سازی الگوریتم به روز رسانی ضرایب فیلتر وجود دارد که از میان آن‌ها در اینجا به ذکر سه نوع از آن‌ها بسنده می‌کنیم:</p>
<ol>
<li><strong>روش حداقل میانگین مربعات<strong>[1]</strong>: </strong>این نوع از فیلترهای تطبیقی طوری ضرایب فیلتر را تغییر می‌دهند که میانگین مربعات خطا (تفاضل سیگنال ورودی و سیگنال مطلوب) را به حداقل برساند. این فیلتر از روش نزول شیب تصادفی[2] برای تطبیق استفاده می‌کند به طوری که تنها با اطلاع از مقدار خطای فعلی ضرایب را تغییر می‌دهد. این فیلتر در سال 1960 و در دانشگاه استنفورد توسط برنارد ویدرو[3] ابداع گردید.</li>
<li><strong>روش بازگشتی حداقل مربعات<strong>[4]</strong>:</strong> در این روش ضرایب فیلتر به طور بازگشتی طوری تعیین می‌گردند که تابع هزینه[5] مربعات خطا به کمترین مقدار برسد. این در تضاد با روش‌هایی مانند LMS است که در آنها کمترین میانگین مربعات مدنظر است. در روش RLS فرض بر این است که ورودی معین[6] است در حالیکه در روش LMS ورودی تصادفی[7] در‌نظر‌گرفته می‌شود. این روش در مقایسه با همتاهای خود بسیار سریع همگرا میشود ولی حجم محاسباتی زیاد و پیچیده‌ای را نیز به همراه دارد. شکل زیر شمای کلی یک فیلتر با الگوریتم به‌روز‌رسانی RLS را نشان میدهد.</li>
<li><strong>روش بلوک چند-تأخیری حوزه فرکانس<strong>[8]</strong>: </strong>این روش در حقیقت پیاده سازی بر پایه بلوک حوزه فرکانس فیلتر LMS است. در این روش فیلتر به صورت بلوکی و در حوزۀ فرکانس به‌روز می‌گردد. به کمک تبدیل FFT سیگنال‌ها به حوزه فرکانس انتقال داده می‌شوند و در حوزۀ فرکانس فیلتر بر روی آنها اعمال می‌گردد. به مدد محاسبات بلوکی، حجم محاسبات کاهش چشمگیری پیدا می‌کند.</li>
</ol>
<p>[1] least mean squares</p>
<p>[2] stochastic gradient descent</p>
<p>[3] Bernard Widrow</p>
<p>[4] recursive least squares</p>
<p>[5] cost function</p>
<p>[6] deterministic</p>
<p>[7] stochastic</p>
<p>[8] multi-delay block frequency domain</p>
<p>&nbsp;</p>
<h2>نتیجه‌گیری و انتخاب الگوریتم مناسب</h2>
<p>با توجه به مسائلی که ذکر گردید و با توجه به هدف این پروژه، بهترین انتخاب فیلتری با الگوریتم LMS خواهد بود. چراکه برای پیاده‌سازی الگوریتم بر روی میکروکنترلر و خروجی محاسبات به صورت بلادرنگ، لازم است تا محاسبات تا حد امکان ساده بوده و حجم محاسباتی نیز متناسب با توان پردازشی موجود باشد. بنابراین در ادامه با انتخاب الگوریتم LMS به ذکر توضیحات و معرفی این روش می‌پردازیم.</p>
<p>&nbsp;</p>
<h1>مرور مقالات:</h1>
<p>تعداد مقالات مورد بررسی برای این پروژه بیش از 20 مقاله بوده که از این میان تعداد 8 مقاله ارتباط نزدیکی با موضوع داشته و کمک بیشتری را نیز در پیشرفت آن داشته اند که در اینجا به طور خلاصه به هریک از آنها اشاره می‌کنیم:.</p>
<table>
<tbody>
<tr>
<td width="307">عنوان مقاله</td>
<td width="217">محل ارائه</td>
<td width="92">سال انتشار</td>
</tr>
<tr>
<td width="307">Adaptive Notch Filter for EEG Signals Based on the LMS Algorithm with Variable Step-Size Parameter</td>
<td width="217">Conference on Information Sciences and Systems</td>
<td width="92">2005</td>
</tr>
</tbody>
</table>
<p>خلاصه: در این مقاله به طراحی و شبیه سازی یک فیلتر تطبیقی با الگوریتم LMS با پارامتر اندازۀ گام متغیر جهت حذف نویز برق شهر از سیگنال الکروانسفالوگرام پرداخته شده است. مقایسه فیلترهای با اندازۀ گام ثابت و متغیر در این مقاله انجام شده است و برتری‌های استفاده از اندازۀ گام متغیر به اثبات رسیده است. از جملۀ آنها می‌توان به ایجاد تعادل بین همگرایی، خطای نهایی و پهنای باند طرد[1] اشاره نمود. با استفاده از این روش، دیگر برای پیدا کردن مقدار مناسب پارامتر اندازۀ گام نیازی به سعی و خطا نیست. مزیت بسیار خوب این روش در همگرایی سریع است که در کاربردهای به‌هنگام[2] مفید است. از دیگر مزایای اشاره شده در این مقاله می‌توان به بهینه بودن پهنای باند طرد شده از سیگنال ورودی اشاره نمود که در کاربردهای حذف نویز از سیگنالهای پزشکی که معمولاً دارای مولفه‌های فرکانس پایین هستند مفید خواهد بود.</p>
<table>
<tbody>
<tr>
<td>عنوان مقاله</td>
<td width="223">محل ارائه</td>
<td width="83">سال انتشار</td>
</tr>
<tr>
<td>Design of an Adaptive Filter with a Dynamic Structure for ECG Signal Processing</td>
<td width="223">International Journal of Control, Automation, and Systems</td>
<td width="83">2005</td>
</tr>
</tbody>
</table>
<p>خلاصه: در کاربردهای حذف نویر از سیگنالهای پزشکی استفاده از الگوریتم LMS امری متداول است. اما مشکل در جایی پیدا میشود که مرتبه فیلتر و یا ضرایب آن با توجه به شرایط محیطی و شرایط بیمار به درستی انتخاب نشده باشند. برای رفع این مشکل، در این مقاله الگوریتم جدیدی به نام DSAF[3] ارائه گردیده که در آن مرتبه فیلتر و ضرایب آن با توجه به شرایط محیطی و وضعیت بیمار تغییر پیدا میکند تا بهترین نتیجه حذف نویز را از نظر زمان همگرایی و خطای نهایی بدست دهد. جهت ارزیابی الگوریتم، ارائه دهندگان آن را با استفاده از نرم افزار متلب بر روی چهار سیگنال ECG استاندارد تست کرده‌اند و نتایج آن را روش مرسوم LMS مقایسه نموده‌اند. در نتیجۀ مقایسه، مشاهده می‌شود که در روش جدید خطای نهایی در کلیۀ شبیه‌سازی‌ها کاهش پیدا کرده و مرتبه فیلتر نیز به مقدار قابل توجهی کم شده است. ساختار تطبیقی در این الگوریتم در واقع الگوریتم تطبیقی دیگری در دل الگوریتم LMS برای تنظیم مرتبه بهینه فیلتر می‌باشد.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table>
<tbody>
<tr>
<td width="335">عنوان مقاله</td>
<td width="208">محل ارائه</td>
<td width="73">سال انتشار</td>
</tr>
<tr>
<td width="335">Implementation of the LMSAlgorithm for Noise Cancellation on Speech Using the ARM LPC2378 Processor</td>
<td width="208">Master Thesis, Vaxjo University</td>
<td width="73">2009</td>
</tr>
</tbody>
</table>
<p>خلاصه: همانگونه که در توضیحات الگوریتم LMS به آن اشاره گردید، این الگوریتم در حذف نویز از سیگنالهایی که مرجع نویزِ تغییر شکل پیدا کرده در آنها به نوعی در دسترس است کارآمد خواهد بود. در این پایان نامه، نویسنده با استفاده در الگوریتم LMS نویز موجود در سیگنالهای صوتی را حذف نموده است. بدین منظور از یک میکروفن اضافه در کنار مرجع تولید‌کننده نویز استفاده نموده است. سیگنالی که از میکروفن دوم دریافت می‌شود، مرجع نویز تغییر یافته در دامنه و فاز را به همراه دارد. شبیه سازی ها با نرم افزار متلب انجام پذیرفته است و نتایج نشان داده که نویز به خوبی از سیگنال صوتی حذف گردیده است. نکته مهم در این پایان نامه پیاده سازی الگوریتم بر روی میکروکنترلر بوده است که بیانگر به‌هنگام بودن سیستم می‌باشد.</p>
<table>
<tbody>
<tr>
<td width="340">عنوان مقاله</td>
<td width="207">محل ارائه</td>
<td>سال انتشار</td>
</tr>
<tr>
<td width="340">Low-Cost, High-Fidelity, Adaptive Cancellation ofPeriodic 60 Hz Noise</td>
<td width="207">University of Texas at Austin</td>
<td>2008</td>
</tr>
</tbody>
</table>
<p>خلاصه: این مقاله به بررسی حذف تطبیقی تویز برق شهر نویز از سیگنالهای پزشکی با استفاده از میکروکنترلر AVR پرداخته شده است. الگوریتم ارائه شده برای حذف نویز همان الگوریتم LMS نرمالیزه شده است که حجم محاسباتی کمی دارد. به دلیل محدودیتهای میکروکنترلر AVR در پردازش سیگنال، در این پروژه بخشی از جمع کننده‌ها به صورت آنالوگ پیاده‌سازی شده است. نتایج بدست آمده در تست سخت افزار قابل قبول بوده و نکته مهم در این پروژه کم هزینه بودن آن است. چرا که استفاده از دیگر راه‌حل‌ها به منظور حذف نویز قطعاً هزینه‌های بیشتری را به همراه خواهد داشت.</p>
<table width="609">
<tbody>
<tr>
<td width="335">عنوان مقاله</td>
<td width="208">محل ارائه</td>
<td width="66">سال انتشار</td>
</tr>
<tr>
<td width="335">Noise Cancellation in ECG Signals usingComputationallySimplified Adaptive FilteringTechniques</td>
<td width="208">Signal Processing: An International Journal</td>
<td width="66">2009</td>
</tr>
</tbody>
</table>
<p>خلاصه: در بخش توضیحات الگوریتم LMS به این موضوع اشاره شد که برای ساده کردن حجم محاسباتی، میتوان از توابع علامت‌دار استفاده نمود. این مقاله به منظور حذف نویز برق شهر، حرکات ناخواسته و نویز ماهیچه‌ای به روش تطبیقی از سیگنال ECG از الگوریتم‌های علامت‌دار استفاده نموده است و نتایج شبیه‌سازی بر روی بانک داده MIT-BIH را با الگوریتم قدیمی مقایسه نموده است. نتایج نشان داده است که الگوریتم SRLMS[4] به مراتب بهتر از LMS عمل میکند در حالی که روش‌های [5]SLMS و SSLMS[6] از جهت حجم محاسباتی و نسبت سیگنال به نویز خروجی با LMS قابل مقایسه خواهند بود.</p>
<table width="604">
<tbody>
<tr>
<td width="316">عنوان مقاله</td>
<td width="208">محل ارائه</td>
<td width="80">سال انتشار</td>
</tr>
<tr>
<td width="316">Noise Removal from Surface Respiratory EMG Signal</td>
<td width="208">World Academy of Science, Engineering and Technology</td>
<td width="80">2008</td>
</tr>
</tbody>
</table>
<p>خلاصه: این مقاله به ارائه روشی برای حذف نویز موجود در سیگنال الکترومایوگرام ارائه نموده است. نویز معرفی شده در این مقاله شامل نویز برق شهر به همراه هارمونیک آن و همچنین نویز حاصل از سیگنال الکتروکاردیوگرام می‌باشد. الگوریتم استفاده شده در این مقاله روش اصلاح شده LMS استفاده شده است که در آن مرجع برق شهر و هارمونیک آن به روش ریاضی ساخته شده است در حالیکه سیگنال الکتروکاردیوگرام با روش تعقیب انطباق، تقریب زده شده است. نکته مهم در مورد این پروژه عدم استفاده از الکترودهای اضافی برای نمونه‌گیری از نویز می‌باشد. مرجع نویز صرفاً به صورت ریاضی و تقریبی استفاده شده است.</p>
<table width="604">
<tbody>
<tr>
<td width="316">عنوان مقاله</td>
<td width="208">محل ارائه</td>
<td width="80">سال انتشار</td>
</tr>
<tr>
<td width="316">Performance Study of Various Adaptive FilterAlgorithms forNoise Cancellation in Respiratory Signals</td>
<td width="208">Signal Processing : An International Journal (SPIJ)</td>
<td width="80">2009</td>
</tr>
</tbody>
</table>
<p>خلاصه: حذف نویز از سیگنالهای تنفسی مسئله قدیمی است. الگوریتم‌های تطبیقی برای این منظور بسیار کارآمد می‌باشند. در این مقاله کارآیی روش‌های مختلف پیاده‌سازی الگوریتم LMS برای حذف اینگونه نویزها بررسی شده است. نویز معرفی شده در این مقاله شامل نویز مرجع برق شهر و همچنین نویز حاصل از حرکات هنگام نمونه‌برداری است. روش‌های LMS، SLMS، SSLMS، BLMS[7] و SRLMS در این مقاله به همراه ضرایب اندازه گام متفاوت مورد بررسی قرار گرفته‌اند. نتیجه‌ای که در این مقاله به آن اشاره شده است حاکی از آن است که همواره بین خطای نهایی و ضریب اندازه گام موازنه وجود دارد.</p>
<table width="604">
<tbody>
<tr>
<td width="316">عنوان مقاله</td>
<td width="208">محل ارائه</td>
<td width="80">سال انتشار</td>
</tr>
<tr>
<td width="316">POWER LINE INTERFERENCE REMOVAL FROM ELECTROCARDIOGRAM USING A SIMPLIFIED LATTICE BASED ADAPTIVE IIR NOTCH FILTER</td>
<td width="208">IEEE Proceedings – 23rd Annual Conference</td>
<td width="80">2001</td>
</tr>
</tbody>
</table>
<p>خلاصه: در مقاله برخلاف مقاله‌های پیشین از فیلتر تطبیقی IIR برای حذف تداخل برق شهر استفاده شده است. در این مقاله به مقایسۀ فیلتر ناچ IIR مرتبه دوم و فیلتر تطبیقی IIR مرتبه دوم پرداخته شده است. به دلیل اینکه فرکانس برق شهر را در شبیه‌سازی‌ها متغیر در نظر گرفته‌اند، فیلتر تطبیقی نتیجه مطلوب‌تری را به همراه داشته است. دقت این الگوریتم از LMS بالاتر بوده ولی به دلیل حجم محاسباتی زیاد، برای پیاده سازی در سیستم‌های ارزان قیمت و بی‌درنگ مناسب نمی‌باشد.</p>
<p>&nbsp;</p>
<p>[1] rejection bandwidth</p>
<p>[2] real time</p>
<p>[3] Dynamic Structure Adaptive Filter</p>
<p>[4] Signed Regression LMS</p>
<p>[5] Signed LMS</p>
<p>[6] Sign-Sign LMS</p>
<p>[7] Block LMS</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>ساختارهای تطبیقی:</h2>
<p>ساختارهای مختلفی برای فیلترهای تطبیقی معرفی شده است که هر کدام در کاربردهای خاصی مورد استفاده قرار می‌گیرند:</p>
<p><strong>به منظور حذف نویز</strong>[1]: ساختار این فیلتر در شکل 3-2 که اصلاح شده فرم کلی فیلتر تطبیقی شکل 1-2 می‌باشد مشاهده می‌گردد. سیگنال مطلوب (d) توسط نویز جمع‌پذیر[2] (n) که هیچ گونه همبستگی نسبت به هم ندارند تخریب شده است. ورودی فیلتر تطبیقی در اینجا سیگنال n’ است که با نویز موجود در سیگنال اصلی همبستگی و شباهت دارد. معمولاً این سیگنال که توسط محیط تغییر شکل پیدا کرده از منبع تولید‌کننده نویز گرفته میشود ولی در کل شبیه به نویز موجود در سیگنال اصلی است. در اینجا، خروجی فیلتر تطبیقی (y) با نویز موجود در سیگنال اصلی انطباق پیدا میکند و وقتی از سیگنال اصلی کم شود، سیگنال مطلوب را بدست می‌دهد.</p>
<p>&nbsp;</p>
<p>[1] noise cancellation</p>
<p>[2] additive</p>
<p>&nbsp;</p>
<ol>
<li><strong>به منظور شناسایی سیستم<strong>[1]</strong>:</strong>همانطور که در شکل 4-2 به تصویر کشیده شده است، این ساختار برای شناسایی سیستم و مدل کردن آن به کار میرود. ورودی‌های یکسان هم به سیستم مجهول و هم به فیلتر تطبیقی داده می‌شود و تفاضل خروجی‌ها مجدداً به فیلتر بازخورد پیدا می‌کند تا ضرایب فیلتر را به‌روز کند و در نهایت فیلتر تطبیقی مطابق با سیستم مجهول و ویژگی‌هایی همانند آن خواهیم داشت</li>
</ol>
<p>&nbsp;</p>
<p>[1] system identification</p>
<p>&nbsp;</p>
<ol>
<li><strong>پیشگویی‌کننده تطبیقی<strong>[1]</strong>: </strong>در این کاربرد، فیلتر تطبیقی به جهت پیدا کردن تقریبی از ورودی به سیستم به‌کار می‌رود. بطوریکه سیستم در هر لحظه با توجه به ورودی‌های قبلی، تقریبی از ورودی بعدی را به دست می‌دهد. بلوک دیاگرام کلی این فیلتر در شکل زیر آمده است:</li>
</ol>
<p>&nbsp;</p>
<p>[1] adaptive predictor</p>
<p>&nbsp;</p>
<ol>
<li><strong>فیلتر ناچ<strong>[1]</strong> با استفاده از دو ضریب: </strong>این ساختار برای حذف یا تضعیف نویز سینوسی به کار برده می‌شود و تنها شامل دو ضریب است که حجم محاسباتی بسیار کمتر از ساختار اول دارد. در شکل زیر ساختار این فیلتر آمده است:</li>
</ol>
<p>&nbsp;</p>
<p>[1] notch filter</p>
<p>&nbsp;</p>
<h2>الگوریتم LMS:</h2>
<p>اگرچه فیلتر LMS معرفی شده برای بسیاری از کاربردهایی نظیر حذف نویز، حذف اکو[1] و پیش‌بینی سیگنال کاربرد دارد، اما انواع دیگری از این الگوریتم برای کاربردهای خاص مورد استفاده قرار می‌گیرند:</p>
<ol>
<li>الگوریتم sign-error که در آن به جای استفاده از سیگنال خطا در الگوریتم اصلی، از تابع علامت آن استفاده میشود:</li>
<li>الگوریتم sign-data که در آن به جای استفاده از سیگنال ورودی در الگوریتم اصلی، از تابع علامت آن استفاده میشود:</li>
<li>الگوریتم sign-sign که در آن از تابع علامت ورودی و خطا در الگوریتم اصلی استفاده میشود:</li>
</ol>
<p>که در روش اخیر هنگامی‌که ورودی و خطا هر دو هم علامت باشند، ضرایب جدید فیلتر  به صورت زیر خواهند بود:</p>
<p>و اگر یکی از آنها علامت مخالف داشته باشد، ضرایب به صورت زیر به‌روز می‌شوند:</p>
<p>سه الگوریتم اصلاح شده‌ای که در بالا به آنها اشاره شد، در کاربردی که مدنظر این پروژه است با توجه به شبیه سازی‌های انجام شده و به دلیل نوع پردازنده استفاده شده و نوع سیگنال مورد پردازش مناسب نیستند. بنابراین در این پروژه از الگوریتم اصلی ارائه شده در بالا استفاده شده است.</p>
<p>&nbsp;</p>
<p>[1] echo cancellation</p>
<p>نوشته <a href="https://matlab1.ir/%d9%81%db%8c%d9%84%d8%aa%d8%b1%d9%87%d8%a7%db%8c-%d8%aa%d8%b7%d8%a8%db%8c%d9%82%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-lms/">فیلترهای تطبیقی مبتنی بر LMS</a> اولین بار در <a href="https://matlab1.ir">ايران متلب</a>. پدیدار شد.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://matlab1.ir/%d9%81%db%8c%d9%84%d8%aa%d8%b1%d9%87%d8%a7%db%8c-%d8%aa%d8%b7%d8%a8%db%8c%d9%82%db%8c-%d9%85%d8%a8%d8%aa%d9%86%db%8c-%d8%a8%d8%b1-lms/feed/</wfw:commentRss>
			<slash:comments>22</slash:comments>
		
		
			</item>
	</channel>
</rss>
