برمجة الجيل الثالث الشبكات العصبية: شبكات عميقة للكاتب فلاديمير بيرفنكو
النتائج 1 إلى 10 من 10
  1. #1
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي الجيل الثالث الشبكات العصبية: شبكات عميقة للكاتب فلاديمير بيرفنكو

    محتويات
    -1 الجيل الثاني من الشبكات العصبية


    1.1. هندسة الاتصالات
    2.1. أنواع الشبكات العصبية الرئيسية
    1.2.1. الشبكات متعددة الطبقات المتصلة بالكامل (MLF) متعددة اللغات (Perceptron متعددة الطبقات)
    2.2.1. شبكة الاردن
    3.2.1. شبكة علمان
    4.2.1. الشبكة الوظيفية القاعدة القاعدية (RBF)
    5.2.1. تكميم المتعلم الديناميكي ، شبكات DLVQ
    6.2.1. شبكة هوبفيلد
    3.1. أساليب التدريب
    1.3.1. القواعد الرئيسية لتعلم الشبكات العصبية
    1.1.3.1. تصحيح الاخطاء
    2.1.3.1. حكم بولتزمان
    3.1.3.1. حكم هب
    4.1.3.1. التعلم التنافسي
    4.1. سلبيات


    -2 تعلم عميق


    1.2. خلفية
    2.2. Autoencoders. Autoencoder وتقييد آلة بولتزمان. الاختلافات والميزات
    1.2.2. Autoencoder
    2.2.2. آلة بولتزمان المقيدة ، RBM
    3.2. مكدسة الأوتاسيكوسيرس الشبكات. Stackеd Autoencoder SAE، مكدسة آلة بولتزمان المقيدة (مكدسة الإدارة القائمة على النتائج)
    4.2. تدريب الشبكات العميقة (DN). مراحل. خصوصيات


    -3 محتويات


    1.3. لغة R
    2.3. تنويعات التنفيذ والقضايا الموجهة
    3.3. تحضير البيانات للتجربة
    1.3.3. مصدر معلومات
    2.3.3. بيانات المدخلات (Predictors)
    1.2.3.3. مؤشر حركة الاتجاه Welles Wilder - ADX (HLC) ، n
    2.2.3.3. aroon (HL، n)
    3.2.3.3. مؤشر قناة السلع - (CCI (HLC، n
    4.2.3.3. (chaikinVolatility (HLC، n
    5.2.3.3. مذبذب زاود مومنتوم - CMO (ميد ، ن)
    6.2.3.3. مؤشر MACD
    7.2.3.3.( OsMA (Med، nFast، nSlow، nSig
    8.2.3.3. مؤشر القوة النسبية -( RSI (Med، n
    9.2.3.3. (Stochastic Oscillator - stoch (HLC، nFastK = 14، nFastD = 3، nSlowD = 3
    10.2.3.3. مؤشر الزخم العشوائي - (SMI (HLC، n = 13، nFast = 2، nSlow = 25، nSig = 9
    11.2.3.3. التقلب (يانغ وتشانغ) - التقلب (OHLC ، n ، calc = "yang.zhang" ، N = 96)
    3.3.3. بيانات المخرجات (الهدف)
    4.3.3. بيانات المقاصة
    5.3.3. تدريب واختبار تشكيل عينة
    6.3.3. موازنة الطبقة
    7.3.3. تجهيزها
    4.3. نماذج البناء والتدريب والاختبار
    1.4.3. الحسابات المتوازية


    -4 التنفيذ (المؤشر والمستشار الخبير)


    1.4. التدريب وحفظ النموذج
    2.4. تركيب وإطلاق النظام
    3.4. طرق وطرق تحسين الخصائص النوعية

    المقدمة
    ستنظر هذه المقالة في الأفكار الرئيسية لهذا الموضوع مثل Deep Learning و Deep Network دون عمليات حسابية معقدة في شروط المواطن العادي.


    تؤكد التجارب مع البيانات الحقيقية (أو لا) المزايا النظرية للشبكات العصبية العميقة على الشبكات الضحلة عن طريق التعريف المتري والمقارنة. المهمة في متناول اليد هي التصنيف. يجب علينا إنشاء مؤشر ومستشار خبير يستند إلى نموذج الشبكة العصبية العميقة والعمل بالتزامن وفقا لخطة العميل / الخادم ومن ثم اختبارها.


    يفترض القارئ أن يكون لديه فكرة عادلة عن المفاهيم الأساسية المستخدمة في الشبكات العصبية.

    1. شبكات الجيل الثاني العصبية


    تم تصميم الشبكات العصبية لمعالجة مجموعة واسعة من المشاكل المرتبطة بمعالجة الصور.


    فيما يلي قائمة بالمشاكل التي يتم حلها عادةً عن طريق الشبكات العصبية:


    - تقريب الوظائف بمجموعة من النقاط (الانحدار) ؛
    - تصنيف البيانات حسب المجموعة المحددة من الفئات ؛
    - تجميع البيانات مع تحديد فئات النموذج الأولي غير المعروفة ؛
    - ضغط المعلومات
    - استعادة البيانات المفقودة
    - الذاكرة الترابطية
    - الأمثل ، والتحكم الأمثل الخ
    - من القائمة أعلاه سيتم مناقشة "تصنيف" فقط في هذه المقالة.

    1.1. هندسة الاتصالات


    تتأثر طريقة معالجة المعلومات بشكل كبير بسبب غياب أو وجود حلقات ردود الفعل في الشبكة. إذا لم تكن هناك ردود فعل مرتجعة بين العصبونات (أي أن الشبكة تحتوي على بنية من الطبقات المتسلسلة حيث يتلقى كل عصبون معلومات فقط من الطبقة السابقة) ، فإن معالجة المعلومات في الشبكة تكون أحادية الاتجاه. تتم معالجة إشارة الإدخال عن طريق تسلسل من الطبقات ويتم تلقي الاستجابة في عدد من براغي مساوية لعدد الطبقات.


    وجود حلقات ردود الفعل يمكن أن تجعل ديناميكية الشبكة العصبية (في هذه الحالة تسمى المتكررة) غير متوقعة. في الواقع ، يمكن للشبكة "التكرار للأبد" ولا تنتج استجابة أبدًا. في الوقت نفسه ، وفقا ل Turing ، لا توجد خوارزمية لشبكة متكررة تعسفية لتحديد ما إذا كانت عناصرها ستدخل في حالة توازن (مشكلة التوقف).


    بشكل عام ، فإن حقيقة أن الخلايا العصبية في الشبكات المتكررة تشارك في معالجة المعلومات مرات عديدة ، تسمح لهذه الشبكات بمعالجة المعلومات على مستوى أعمق بطرق مختلفة. في هذه الحالة ، يجب اتخاذ تدابير خاصة حتى لا تتكرر الشبكة إلى الأبد. على سبيل المثال ، استخدم اتصالات متناظرة ، كما هو الحال في شبكة Hopfield أو حدّد عدد التكرار بالقوة.

    اضغط على الصورة لعرض أكبر

الاســـم:	Table 1. Neural network classification by connection type and training type.PNG
المشاهدات:	48
الحجـــم:	20.3 كيلوبايت
الرقم:	493141

    1.2. أنواع الشبكات العصبية الرئيسية


    بعد أن بدأت مع الشبكات العصبية ، قطعت الشبكات العصبية شوطا طويلا في تطورها. اليوم ، هناك عدد كبير من الشبكات العصبية تتنوع في البنية وتستخدم أساليب التدريب.


    الاكثر شهرة هي:


    1.2.1. الشبكات متعددة الطبقات المتصلة بالكامل (MLF) متعددة اللغات (Perceptron متعددة الطبقات)

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 1. Structure of a multilayer neural network.PNG
المشاهدات:	108
الحجـــم:	41.7 كيلوبايت
الرقم:	493142

    1.2.2. الشبكات الأردنية هي شبكات متكررة جزئياً ومماثلة لشبكات "ألمان".


    يمكن معالجته كشبكة موجّهة مع عصبونات سياق إضافية في طبقة الإدخال.


    يتم تغذية هذه الخلايا العصبية السياق من قبل أنفسهم (ردود فعل مباشرة) ومن الخلايا العصبية المدخلات. الخلايا العصبية السياق الحفاظ على الحالة الراهنة للشبكة. في شبكة الأردن ، يجب أن يكون عدد السياق والخلايا العصبية المدخلة هو نفسه.

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig2_Jordan_neural_network.png
المشاهدات:	50
الحجـــم:	28.0 كيلوبايت
الرقم:	493144
    1.2.3. شبكات Elman

    هي شبكات متكررة جزئياً ومماثلة لشبكات الأردن. الفرق بين شبكتين Elman والأردن هو أن الخلايا العصبية في سياق شبكة إلمان لا تغذيها الخلايا العصبية الخرجية ، بل الخلايا الخفية. الى جانب ذلك ، لا توجد ردود فعل مباشرة في الخلايا العصبية السياق.


    في شبكة إلمان ، يجب أن يكون عدد السياق والخلايا العصبية المخفية هو نفسه. الميزة الرئيسية لشبكات Elman هي أن عدد الخلايا العصبية السياقية لا يتم تحديده من خلال عدد المخرجات كما هو الحال في الشبكة الأردنية ولكن عدد الخلايا العصبية المخفية ، مما يجعل الشبكة أكثر مرونة. يمكن بسهولة إضافة الخلايا العصبية المخفية أو اتخاذها على عكس عدد من المخرجات.
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig3_Elman_neural_network.png
المشاهدات:	66
الحجـــم:	52.6 كيلوبايت
الرقم:	493146

    1.2.4. شبكة دالة الأساس الشعاعي (RBF) -
    هي شبكة عصبية متقدمة إلى الأمام تحتوي على طبقة وسيطة (مخفية) من الخلايا العصبية المتناظرة شعاعيًا. يقوم مثل هذا العصبون بتحويل المسافة من ناقل مدخلات محدد إلى مركز المراسلة الخاص به عن طريق بعض القوانين غير الخطية التي اعتُبِرت غوسيًا.


    تتميز شبكات RBF بالعديد من المزايا على الشبكات المتقدمة للتغذية متعددة الطبقات. بادئ ذي بدء ، فإنها تحاكي (غير متأكد من كلمة) وظيفة غير خطية عشوائية مع طبقة وسيطة واحدة فقط ، مما يوفر على المطور ضرورة اتخاذ قرار بشأن عدد الطبقات. بعد ذلك ، يمكن تحسين المعلمات في المجموعة الخطية في طبقة المخرجات بمساعدة طرق معروفة على نطاق واسع للتحسين الخطي. هذا الأخير يعمل بسرعة وليس لديهم صعوبات مع الحد الأدنى المحلي الذي يتداخل بشكل كبير في backpropagation. هذا هو السبب في أن شبكة RBF تتعلم أسرع بكثير من استخدام backpropagation.


    عيوب RBF: هذه الشبكات لها خصائص استنتاجية ضعيفة وتبين أنها مرهقة عندما يكون متجه الإدخال كبيرًا.

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig4_Radial_Basis_Functions_neural_network.png
المشاهدات:	553
الحجـــم:	10.1 كيلوبايت
الرقم:	493148
    1.2.5. دينامية التعلم المتجه الكمي DLVQ
    الشبكات تشبه إلى حد بعيد خرائط التنظيم الذاتي (SOM). على عكس SOM ، DLVO قادرة على التعلم تحت إشراف وتفتقر إلى علاقة الجوار بين النماذج. تكاثر المتجه استخدام أوسع من التجميع.


    1.2.6. Hopfield Network
    هي شبكة متصلة بالكامل مع مصفوفة اتصال متناظرة. أثناء التشغيل ، تتلاقى ديناميكيات هذه الشبكات مع إحدى حالات التوازن. حالات الاتزان هذه هي الحد الأدنى المحلي للوظائف المعروفة باسم طاقة الشبكة. يمكن استخدام مثل هذه الشبكة كنظام ذاكرة ترابطية للمحتوى ، كعامل تصفية وللتصدي لبعض تحديات التحسين.


    على عكس العديد من الشبكات العصبية التي تعمل حتى تحصل على استجابة في عدد معين من البراعة ، تعمل شبكات Hopfield حتى تصل إلى حالة التوازن عندما تكون الحالة التالية للشبكة هي نفسها تمامًا كالشبكة السابقة. في هذه الحالة ، تكون الحالة الأولية عبارة عن نمط مدخلات وفي حالة التوازن يتم استلام صورة المخرجات. يتطلب تدريب شبكة Hopfield نمط تدريب ليتم عرضه على طبقات الإدخال والإخراج في وقت واحد.

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig5_Hopfield_neural_net.png
المشاهدات:	36
الحجـــم:	4.7 كيلوبايت
الرقم:	493150
    على الرغم من الخصائص الجذابة ، إلا أن شبكة Hopfield الكلاسيكية بعيدة عن كونها مثالية. لديه ذاكرة محدودة ، حوالي 15 ٪ من عدد الخلايا العصبية في الشبكة N ، في حين أن أنظمة الذاكرة المعنونة يمكن تخزين ما يصل إلى 2N من الصور المختلفة ، وذلك باستخدام N بت.


    إلى جانب ذلك ، فإن شبكات Hopfield غير قادرة على التعرف على ما إذا كانت الصورة قد تشردت أو تحولت فيما يتعلق بموقعها المخزن الأولي. هذه العوائق الأخرى تحدد إدراك شبكة Hopfield كنموذج نظري مناسب للدراسة بدلاً من أداة عملية لاستخدام كل يوم.


    العديد من الآخرين (شبكة Hemming المتكررة ، شبكة Grossberg ، شبكات نظرية الرنين التكيفي (ART-1 ، ART-2) الخ) لم تذكر في هذه المقالة لأنها خارج نطاق اهتمامنا.

    1.3. أساليب التدريب


    القدرة على تعلم أشياء جديدة هي السمة الرئيسية للدماغ البشري. في حالة الشبكات العصبية الاصطناعية ، فإن التعلم هو عملية تكوين بنية الشبكة (بنية الروابط بين العصبونات) وأوزان الروابط المشبكية (التي تؤثر على إشارات المعامل) للحصول على حل فعال للمهمة الموجودة. يتم عادة تدريب الشبكة العصبية على عينة بيانات. تتبع عملية التدريب خوارزمية معينة وعندما تستمر ، يجب أن يتحسن تفاعل الشبكة مع إشارات الدخل.


    هناك ثلاثة نماذج تعليمية رئيسية: تحت إشراف ، بدون إشراف ، ومجتمعة. في الحالة الأولى ، تُعرف الإجابات الصحيحة لكل مثال إدخال وتحاول الأوزان تقليل الخطأ. التعلم بدون إشراف يسمح بتصنيف العينات من خلال شرح البنية الداخلية وطبيعة البيانات. في التدريب المشترك يتم استخدام كل من الأساليب المذكورة أعلاه.


    1.3.1. القواعد الرئيسية لتعلم الشبكات العصبية


    هناك أربعة قواعد تعليمية أساسية تعتمد على بنية الشبكة المرتبطة بها: تصحيح الأخطاء ، قانون بولتزمان ، حكم هب والتعلم التنافسي.


    1.3.1.1. تصحيح الاخطاء


    يحتوي كل مثال إدخال على قيمة إخراج مرغوبة محددة (قيمة الهدف) ، والتي قد لا تتطابق مع القيمة الحقيقية (المتوقعة). تستخدم قاعدة تعلم تصحيح الأخطاء الفرق بين الهدف والقيم المتوقعة للتكيف المباشر للأوزان من أجل تقليل الخطأ. يتم التدريب فقط في حالة وجود نتيجة خاطئة. هذه القاعدة التعليمية لديها العديد من التعديلات.


    1.3.1.2. قاعدة بولتزمان


    قاعدة بولتزمان هو قاعدة تعلم عشوائية قياسا على مبادئ الديناميكا الحرارية. وينتج عن ذلك تعديل معاملات وزن الخلايا العصبية وفقا للتوزيع الاحتمالي المرغوب. يمكن اعتبار قاعدة بولتزمان كحالة معزولة للتصحيح عن طريق الخطأ حيث يشير الخطأ إلى وجود اختلاف في الارتباط بين الحالات في وضعين.


    1.3.1.3. قاعدة هب


    قاعدةهب هي أشهر خوارزمية تعليم الشبكات العصبية. فكرة هذه الطريقة هي أنه إذا كانت الخلايا العصبية على جانبي المشبك تنشط بشكل متزامن ومنتظم ، فإن قوة الوصلة المشبكية تزداد. من الخصائص المهمة هنا أن تغير الوزن المشبكي يعتمد فقط على نشاط العصبونات المرتبطة بهذا المشبك. هناك العديد من الاختلافات في هذه القاعدة التي تختلف في خصوصيات في تعديل الوزن متشابك.


    1.3.1.4. التعلم التنافسي


    على عكس قاعدة هب للتعلم ، حيث يمكن أن ينشط عدد من الخلايا العصبية في وقت واحد ، هنا تتنافس الخلايا العصبية الخراجية مع بعضها البعض. إن الخلايا العصبية المخرجة ذات القيمة القصوى للمبلغ الموزون هي "الفائز" و "الفائز يأخذ كل شيء". يتم تعيين نواتج الخلايا العصبية الخرج الأخرى إلى غير نشطة. عند التعلُّم ، يتم فقط تعديل قيم أوزان "الفائز" التي تستهدف استهداف القرب من مثيل الإدخال الحالي.


    هناك الكثير من خوارزميات التعلم التي تعالج مشاكل مختلفة. واحدة من أكثر الخوارزميات الحديثة فاعلية ، هي واحدة منها. المبدأ وراء ذلك هو أن تغير الوزن متشابك يحدث مع النظر في التدرج المحلي للوظيفة الخطأ.


    الفرق بين الاستجابات الحقيقية والصحيحة للشبكة العصبية التي تم تقييمها في طبقة الخرج تم نشرها - نحو تيار الإشارات (الشكل 5). وبهذه الطريقة يمكن لكل عصبون تحديد مساهمة وزنها في الخطأ التراكمي للشبكة. أبسط قواعد التعلم هي أشد طرق النسب ، وهي تغير الوزن المشبكي بالتناسب مع مساهمتها في الخطأ التراكمي.
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig6_Error_backpropagation.png
المشاهدات:	37
الحجـــم:	109.9 كيلوبايت
الرقم:	493151

    من المؤكد أن هذا النوع من التعلم العصبي الشبكي لا يضمن أفضل نتيجة تعلم حيث أن هناك دائما احتمال أن الخوارزمية قد وصلت إلى الحد الأدنى المحلي. هناك تقنيات خاصة تسمح بإزالة الحل الموجود من نقطة متطرفة محلية. إذا كانت الشبكة العصبية بعد عدة تطبيقات من هذه التقنية لها نفس القرار ، فيمكن استنتاج أن الحل الموجود هو الأكثر احتمالا.


    1.4. سلبيات


    الصعوبة الرئيسية لاستخدام الشبكات العصبية هي ما يسمى بـ "لعنة البعدية". عندما يتم زيادة أبعاد المدخلات وعدد الطبقات ، فإن تعقيد الشبكة ووقت التعلم يتزايدان بشكل مضاعف والنتيجة المستلمة ليست دائماً مثالية.
    صعوبة أخرى لاستخدام الشبكات العصبية هي أن الشبكات العصبية التقليدية غير قادرة على شرح كيفية حلها للمهام. في بعض مجالات التطبيق مثل الطب هذا التفسير هو أكثر أهمية من النتيجة نفسها. غالباً ما يكون التمثيل الداخلي للنتائج معقداً لدرجة أنه من المستحيل تحليله باستثناء الحالات الأبسط التي لا تهم في العادة.


    2. التعلم العميق
    تمر اليوم نظرية وممارسة التعلم الآلي "بثورة عميقة" ، ناجمة عن التنفيذ الناجح لأساليب التعلم العميق ، التي تمثل الشبكات العصبية من الجيل الثالث. على عكس شبكات الجيل الثاني الكلاسيكية المستخدمة في 80s-90s من القرن الماضي ، تحل نماذج التعلم الجديدة عددا من المشاكل التي تقيد التوسع والتنفيذ الناجح للشبكات العصبية التقليدية.


    الشبكات التي تم تدريبها باستخدام خوارزميات التعلم العميق لم تفرق ببساطة أفضل الطرق البديلة في الدقة ولكن في بعض الحالات كشفت عن أساسيات فهم معلومات المدخلات. إن التعرف على الصور ونص تحليل المعلومات هي ألمع الأمثلة.


    اليوم ، تعتمد الطرق الصناعية الأكثر تقدمًا لرؤية الكمبيوتر والاعتراف بالكلام على الشبكات العميقة. عمالقة صناعة تكنولوجيا المعلومات مثل Apple و Google و Facebook يستخدمون الباحثين لتطوير الشبكات العصبية العميقة.

    2.1. خلفية


    فاز فريق من طلاب الدراسات العليا الذين يدرسون في جامعة تورنتو بقيادة الأستاذ جيفري هينتون بالجائزة الأولى في مسابقة برعاية ميرك. باستخدام مجموعة بيانات محدودة ، تصف التركيب الكيميائي لـ 15 جزيء ، تمكنت مجموعة G. Hinton من إنشاء وتطبيق نظام برنامج خاص يحدد أي من هذه الجزيئات من المرجح أن يكون دواء فعال.


    كانت خصوصية هذا العمل أن المطورين استخدموا شبكة عصبية اصطناعية تعتمد على التعلم العميق. ونتيجة لذلك ، تمكن النظام من إجراء عمليات حسابية وبحوث تستند إلى مجموعة محدودة للغاية من بيانات المصدر ، في حين يتطلب تدريب الشبكة العصبية عادة كمية كبيرة من المعلومات التي يتم وضعها في النظام.


    كان انجاز فريق هينتون مثير للإعجاب بشكل خاص لأن الفريق قرر الدخول في المسابقة في الدقيقة الأخيرة. إضافة إلى ذلك ، تم تطوير نظام التعلم العميق دون معرفة محددة حول كيفية ارتباط الجزيئات بأهدافها. كان التنفيذ الناجح للتعلم العميق إنجازًا آخر في تطوير الذكاء الاصطناعي للأحداث 2012 الحافل بالأحداث.


    لذلك في صيف عام 2012 ، قدم جيف دين وأندرو ي. نغ من Google نظامًا جديدًا للتعرف على الصور بمعدل دقة يبلغ 15،8٪ ، حيث تم تدريب نظام مجموعة من 16000 عقدة استخدموا شبكة ImageNet تحتوي على مكتبة تضم 14 مليون صورة 20000 كائن مختلف. في العام الماضي ، تفوق برنامج وضعه علماء سويسريون على الإنسان في التعرف على صور إشارات المرور. حدد البرنامج الفائز بدقة 99.46 في المئة من الصور في مجموعة من 50،000 ؛ وكانت أعلى درجة في مجموعة من 32 مشاركًا بشريًا 99.22 بالمائة ، وكان متوسط ​​البشر 98.84 بالمائة. في تشرين الأول / أكتوبر 2012 ، قام ريتشارد ف. رشيد ، منسق برامج مايكروسوفت العلمية في مؤتمر عُقد في تيانجين بالصين بتكنولوجيا الترجمة الفورية من الإنجليزية إلى لغة الماندارين مصحوبة بمحاكاة لصوته الخاص.


    وتستند جميع هذه التقنيات التي تظهر اختراقاً في مجال الذكاء الاصطناعي إلى أسلوب التعلم العميق إلى حد معين. إن الإسهام الرئيسي في نظرية التعلم العميق يقوم به البروفيسور هينتون ، وهو حفيد جورج بول الكبير ، وهو عالم إنجليزي ، مؤسس جبر بول الذي يكمن وراء الحواسيب المعاصرة.


    تستكمل نظرية التعلم العميق الطرق العادية لتعلم الآلة باستخدام خوارزميات خاصة لتحليل معلومات المدخلات في العديد من مستويات العرض التقديمي. تكمن خصوصية الأسلوب الجديد في أن التعلم العميق يدرس الموضوع حتى يجد مستويات عرض معلومات كافية كافية لمراعاة جميع العوامل التي يمكن أن تؤثر على معايير الكائن موضع البحث.


    بهذه الطريقة ، تتطلب الشبكة العصبية القائمة على مثل هذا النهج معلومات مدخلات أقل للتعلم ، وتكون الشبكة المدربة قادرة على تحليل المعلومات بدقة أعلى من الشبكات العصبية المعتادة. ويذكر البروفيسور هينتون وزملاؤه أن تقنيتهم ​​مفيدة بشكل خاص للبحث عن الخصائص المميزة في مصفوفة المعلومات متعددة الأبعاد والمصممة بشكل جيد.


    تستخدم تقنيات الذكاء الاصطناعي (AI) ، وخاصة التعلم العميق ، على نطاق واسع في أنظمة مختلفة ، بما في ذلك المساعد الشخصي الذكي Apple Siri استنادًا إلى تقنيات الاتصالات Nuance وعناوين التعرف في Google Street View. ومع ذلك ، يقدر العلماء النجاح في هذا المجال بعناية شديدة لأن تاريخ إنشاء الذكاء الاصطناعي مليء بالوعود وخيبات الأمل المتفائلة.


    في الستينيات ، اعتقد العلماء أن الأمر سيستغرق 10 سنوات فقط لإنشاء ذكاء اصطناعي متميز بالكامل. ثم في ثمانينيات القرن العشرين ، كانت هناك موجة من الشركات الشابة تقدم "ذكاءً اصطناعياً جاهزاً" يليه "العصر الجليدي" في هذا المجال ، والذي استمر حتى وقت قريب. توفر القدرات الحسابية الواسعة المتاحة حاليًا في الخدمات السحابية مستوى جديدًا من تنفيذ الشبكات العصبية القوية باستخدام قاعدة نظريّة وخوارزميّة جديدة.


    تجدر الإشارة إلى أن الشبكات العصبية ، حتى الجيل الثالث منها مثل الشبكات العصبية التلافيفية ، autassociators ، آلات بولتزمان ، ليس لها أي شيء مشترك مع الخلايا العصبية البيولوجية باستثناء الاسم.


    ينفّذ نموذج التعلم الجديد فكرة التعلم على مرحلتين. في المرحلة الأولى ، يتم استخراج معلومات حول البنية الداخلية للبيانات المدخلة من مجموعة كبيرة من البيانات غير المنسقة باستخدام autoassociator من خلال التدريب غير المدروس على طبقة تلو الأخرى. بعد ذلك ، وباستخدام هذه المعلومات في شبكة عصبية متعددة الطبقات ، فإنه يمر عبر التدريب الخاضع للإشراف بطرق معروفة باستخدام البيانات المنسقة. في الوقت نفسه ، يجب أن يكون حجم البيانات غير المنسقة أكبر حجم ممكن. يمكن أن تكون البيانات المنسقة أصغر حجمًا بكثير. في حالتنا ليس من الأهمية الفورية.

    2.2. Autoencoders. Autoencoder وتقييد آلة بولتزمان. الاختلافات والميزات


    2.2.1. Autoencoder


    كان autassociator الأول (АА) هو Fukushima neocognitron .


    يتم تقديم هيكلها في Fig.7.

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig7_Fukushima_neocognitron_neural_network.png
المشاهدات:	605
الحجـــم:	20.4 كيلوبايت
الرقم:	493152

    الغرض من (autassociator (АА هو استلام عند الإخراج كصورة دقيقة من الإدخال قدر الإمكان.


    هناك نوعان من توليد وتوليف. تنتمي آلة بولتزمان المقيدة إلى النوع الأول ويمثل autoencoder النوع الثاني.


    Autoencoder هو شبكة عصبية ذات طبقة واحدة مفتوحة. باستخدام خوارزمية تعلم غير خاضعة للرقابة ونشر مرة أخرى ، يقوم بتعيين قيمة مستهدفة تساوي متجه الإدخال ، أي y = x.


    ويرد مثال على autoencoder على Fig.8.

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig8_AutoEncoder_scheme.png
المشاهدات:	21
الحجـــم:	117.0 كيلوبايت
الرقم:	493153
    يحاول Autoencoder إنشاء الدالة h (x) = x. وبعبارة أخرى ، تحاول أن تجد تقريبًا لوظيفة تضمن أن التغذية المرتدة للشبكة العصبية تساوي تقريبًا قيم معلمات الدخل. ولكي يكون حل المشكلة غير بديهي ، يجب أن يكون عدد الخلايا العصبية في الطبقة المفتوحة أقل من بُعد بيانات المدخلات (كما في الصورة).


    يسمح بضغط البيانات عندما يتم تمرير إشارة الدخل إلى خرج الشبكة. على سبيل المثال ، إذا كان متجه الإدخال عبارة عن مجموعة من مستويات السطوع لصورة بحجم 10 × 10 بكسل (100 سمة) ، فإن عدد الخلايا العصبية للطبقة المخفية هو 50 ، فإن الشبكة تضطر إلى تعلم ضغط الصورة. يعني المتطلب h (x) = x أنه بناءً على مستويات تنشيط خمسين خلية عصبية من الطبقة المخفية ، فإن طبقة الخرج هي استعادة 100 بيكسل من الصورة الأولية. مثل هذا الانضغاط ممكن إذا كانت هناك ترابط مخفي أو ارتباط مميز أو أي بنية على الإطلاق. بهذه الطريقة يذكّر تشغيل autoencoder طريقة تحليل المكون الأساسي (PCA) بمعنى أنه يتم تقليل بيانات الإدخال.


    والمثير للدهشة أن التجارب التي أجراها Bengio et al. (2007) ، أظهرت أنه عند التدريب مع أصل الانحدار العشوائي ، فإن شبكات التزويد الذاتي غير الخطية مع عدد الخلايا العصبية المخفية أكبر من عدد المدخلات (وتسمى أيضا "superabundant") كان لها عرض مفيد في ضوء خطأ المطابقة للشبكة التي أخذ هذا العرض من المدخلات.


    في وقت لاحق ، عندما ظهرت فكرة التفاوت ، تم استخدام autoencoder المتناثر على نطاق واسع.


    إن autoencoder المتناثر هو autoencoder يحتوي على عدد من الخلايا العصبية المخفية أكبر بكثير من البعد المدخلات ولكن لديهم تنشيط متفرق. التنشيط المتقطع هو عندما يكون عدد الخلايا العصبية غير النشطة في الطبقة المخفية أكبر بكثير من عدد الخلايا النشطة. إذا وصفنا الندرة بشكل غير رسمي ، فيمكن اعتبار العصبون نشطًا إذا كانت قيمة وظيفته قريبة من 1. إذا كانت هناك دالة سينيّة قيد الاستخدام ، فعندئذ بالنسبة للخلايا العصبية الخاملة ، يجب أن تكون قيمتها قريبة من الصفر (للوظيفة الزائدية يجب أن تكون القيمة قريبة من -1).


    هناك اختلاف من autocoder يسمى denoising autoencoder (فنسنت وآخرون ، 2008). هذا هو نفس autoencoder ولكن تدريبها لديه بعض الخصائص. عند تدريب هذه الشبكة ، يتم إدخال البيانات "التالفة" (يتم استبدال بعض القيم بـ 0). في نفس الوقت ، هناك بيانات "صحيحة" للمقارنة مع بيانات الإخراج. بهذه الطريقة يستطيع autoencoder استعادة البيانات التالفة.

    2.2.2. آلة بولتزمان المقيدة ، RBM.


    لن نركز على تاريخ آلة بولتزمان المقيدة (RBM). كل ما نحتاج إلى معرفته هو أنها بدأت مع الشبكات العصبية المتكررة مع ردود الفعل التي كان من الصعب جدا تدريبها. بسبب صعوبة التعلم هذه ، ظهرت نماذج متكررة أكثر تقييدًا بحيث يمكن تطبيق خوارزميات التعلم البسيطة. كانت الشبكة العصبية Hopfield واحدة من هذه النماذج. كان جون هوبفيلد الشخص الذي قدم مفهوم طاقة الشبكة بعد مقارنة ديناميات الشبكة العصبية بالديناميكا الحرارية.


    وكانت الخطوة التالية على الطريق إلى الإدارة القائمة على النتائج هي آلات بولتزمان العادية. وهي تختلف عن شبكة هوبفيلد في الطبيعة العشوائية وتنقسم عصبوناتها إلى مجموعتين تصف الحالات المرئية والخفية (على غرار نموذج ماركوف المخفي). تختلف ماكينة بولتزمان المقيدة عن الماكينة العادية في غياب الاتصالات بين الخلايا العصبية لطبقة واحدة.


    يمثل الشكل 9 هيكل الإدارة القائمة على النتائج.

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig9_Restricted_Boltzmann_Machine.png
المشاهدات:	534
الحجـــم:	10.4 كيلوبايت
الرقم:	493154


    خصوصية هذا النموذج هو أنه في الحالات الحالية من الخلايا العصبية لمجموعة واحدة ، فإن حالات الخلايا العصبية لمجموعة أخرى ستكون مستقلة عن بعضها البعض. الآن يمكننا الانتقال إلى بعض النظريات حيث يكون لهذه الخاصية الدور الرئيسي.









    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  2. #2
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    التفسير والهدف

    يتم تفسير الإدارة المستندة إلى النتائج المماثلة لنموذج ماركوف المخفي. لدينا عدد من الحالات التي يمكننا ملاحظتها (الخلايا العصبية المرئية) وعدد من الحالات المخفية التي لا يمكننا رؤيتها مباشرة (الخلايا العصبية الخفية). يمكننا التوصل إلى استنتاج قائم على الاحتمالات حول الدول الخفية التي تعتمد على الدول التي يمكننا ملاحظتها. بعد أن يتم تدريب هذا النموذج ، سنحصل على فرصة لاستخلاص استنتاجات فيما يتعلق بالدول المرئية التي تدرك أن الأشخاص المختبئين يتبعون نظرية بايز. يسمح ذلك بتوليد البيانات من توزيع الاحتمالات المستخدم لتدريب النموذج.

    وبهذه الطريقة يمكننا صياغة هدف تدريب نموذج: يجب تعديل معلمات النموذج بالطريقة بحيث يكون المتجه المستعاد من الحالة الأولية أقرب إلى الأصل. المتجدد المستعاد هو متجه يستقبله استدلال احتمالي من الحالات المخفية ، التي وردت بدورها باستدلال احتمالي من حالات مرئية ، أي من المتجه الأصلي.

    خوارزمية التدريب هي Divergence CD-k

    هذه الخوارزمية اخترعها البروفيسور هينتون في عام 2002 وهي بسيطة بشكل ملحوظ. الفكرة الرئيسية هي أن قيم التوقع الرياضي يتم استبدالها بقيم محددة. قدم فكرة Gibbs أخذ العينات.

    تبدو CD-k:

    - يتم تعيين حالة الخلايا العصبية مرئية تساوي نمط الإدخال.
    - يتم رسم احتمالات حالات الطبقة المخفية ؛
    - كل عصبون من الطبقة المخفية يتم تعيين الحالة "1" مع احتمال مساوٍ لحالتها الحالية ؛
    - يتم رسم احتماليات حالات الطبقة المرئية على أساس الطبقة المخفية ؛
    - إذا كان التكرار الحالي أقل من k ، فارجع إلى الخطوة 2 ؛
    - يتم رسم احتمالات حالات الطبقة المخفية ؛
    - في محاضرات هنتون يبدو الأمر كما يلي:

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig10_CDk_learning_algorithm.png
المشاهدات:	19
الحجـــم:	32.2 كيلوبايت
الرقم:	493155

    وبعبارة أخرى ، كلما قمنا بعمل أخذ العينات ، كلما كان التدرج أكثر دقة. ويقول الأستاذ إن النتيجة التي تم الحصول عليها من أجل CD-1 ، أي تكرار واحد فقط لأخذ العينات ، هي بالفعل جيدة.






    2.3. مكدسة الأوتاسيكوسيرس الشبكات. Stackеd Autoencoder SAE، مكدسة آلة بولتزمان المقيدة (مكدسة الإدارة القائمة على النتائج)


    لاستخراج التجريدات عالية المستوى من مجموعة البيانات المدخلة ، يتم الجمع بين autassociators في شبكة.


    يمثل الشكل 11 بنية autocoder مكدسة وشبكة عصبية ، والتي تمثل معاً شبكة عصبية عميقة بأوزان تم تهيئتها بواسطة autocoder مكدس
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig11_Deep_Neural_Network_Stacked_AutoEncoder.png
المشاهدات:	24
الحجـــم:	23.0 كيلوبايت
الرقم:	493156

    في Fig.12 ، هناك نمط من RBM مكدسة (SRBM) وشبكة عصبية ، والتي تمثل معا شبكة عصبية عميقة مع الأوزان التي وضعتها SRBM.


    تؤكد هذه الرسوم التوضيحية لهياكل الشبكة العميقة على حقيقة أن المعلومات يتم استخراجها من أسفل إلى أعلى.

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig12_Deep_neural_network_initialized_SRBM.png
المشاهدات:	36
الحجـــم:	21.9 كيلوبايت
الرقم:	493157

    2.4. تدريب الشبكات العميقة (DN). مراحل. خصوصيات


    تتألف شبكات التدريب العميق من مرحلتين. في المرحلة الأولى ، تتلقى شبكة (autoassociator (SAE أو SRBM ، اعتمادًا على نوع DN تدريبًا غير خاضع للإشراف على مصفوفة بيانات غير منسَّقة. بعد ذلك ، تبدأ طبقة الخلايا العصبية المخفية من MLP العادي بواسطة أوزان الطبقة المخفية التي يتم تلقيها بعد التدريب. يمثل الشكل 11 والشكل 12 نمطًا لعمليات التعلم والنقل. بعد تدريب أول ЕЕ / RBM ، تصبح الأوزان العصبية للطبقة المخفية مدخلات للطبقة الثانية الخ. وبهذه الطريقة ، يتم استخراج المعلومات عن البنية (خط ، كفاف ، طقطق ، الخ) من البيانات.


    المرحلة الثانية هي الوقت المناسب لضبط MLP (التدريب تحت الإشراف) على مجموعة البيانات المنسقة باستخدام طرق معروفة. أثبتت الممارسة أن مثل هذه التهيئة تحدد أوزان الخلايا العصبية للطبقات المخبأة لـ MLP إلى الحد الأدنى العالمي ، وتستغرق عملية الضبط التالية وقتًا قصيرًا للغاية.


    علاوة على ذلك ، بالنسبة إلى الشبكات العميقة ذات عدد الطبقات الأكبر من ثلاثة ، اقترح D. Hinton أنه يجب إجراء الضبط الدقيق على مرحلتين. في المرحلة الأولى ، يجب تدريب طبقتين علويتين فقط والثانية على بقية الشبكة.


    تجدر الإشارة إلى أن SRBM لديه نتائج أقل استقرارا للتدريب غير خاضعة للرقابة من SAE.


    ملحوظة. في كثير من الأحيان يتم الخلط بين هذه الشروط. يتم تحديد SRBM مع شبكة المعتقدات العميقة DBN. وعلى الرغم من حقيقة أن الإدارة المستندة إلى النتائج المستمدة من نظام DBN ، فهي هياكل مختلفة تماماً. A DBN هي شبكة عصبية متعددة الطبقات ، مع أوزان الخلايا العصبية من الطبقات المخفية التي تم تهيئتها بشكل عشوائي بواسطة الأنماط الثنائية.

    3. التجارب العملية
    سيتم تنفيذ شبكات عميقة في R.


    3.1. لغة R


    التاريخ. R هي لغة برمجة وبيئة للحسابات الإحصائية والرسوم البيانية ، التي تم تطويرها في عام 1996 من قبل علماء نيوزيلنديين روس إهاكا وروبرت جنتلمان في جامعة أوكلاند.


    R هو مشروع GNU وهو برمجيات حرة وفلسفته تتجه إلى المبادئ التالية:


    حرية إطلاق برامج لأي غرض (حرية 0) ؛
    الحرية في تعلم كيفية عمل البرنامج وتكييفه حسب الاحتياجات الخاصة (حرية 1) ؛
    حرية توزيع نسخ لمساعدة الآخرين (الحرية 2) ؛
    حرية تحسين البرنامج وترك المجتمع يستفيد من التحسينات.
    في المنظور التاريخي ، R هو بديل لتنفيذ S. تم تطوير هذا الأخير من قبل جون تشامبرز وزملائه في شركة Bell Labs في عام 1976. واليوم ، لا يزال R يتم تحسينه من قبل فريق R Development Core بما في ذلك John Chambers.


    لتكرار التجارب ، ستحتاج إلى تثبيت R و Rstudio. معلومات حول مكان التنزيل وكيف يمكن العثور عليه على الإنترنت. إذا كان هناك أي أسئلة ، يمكننا مناقشتها في التعليقات على المقالة.


    مزايا r:


    اليوم R هو المعيار في الحسابات الإحصائية.
    يتم تطويره ودعمه من قبل المجتمع العلمي العالمي للجامعات.
    مجموعة واسعة من الحزم لجميع المجالات المتقدمة من استخراج البيانات. الوقت بين نشر الفكرة وتنفيذها في حزمة R عادة لا يعد ذلك أسبوعين.
    وأخيرا وليس آخرا ، فهو مجاني تماما. قال مطور شهير لنظام التشغيل المجاني مرة: "البرامج مثل الجنس - أفضل عندما تكون حرة".

    3.2. تنويعات التنفيذ والقضايا الموجهة


    هناك طريقتان ممكنتان للتنفيذ.


    أول واحد ينطوي على استخدام برامج فريدة من قبل جون هينتون لماتلاب. لذلك مطلوب "R.matlab". تحتوي هذه الحزمة على أساليب writeMat () و readMat () لقراءة ملفات MAT وكتابتها. وهو يتيح الاتصال (تنفيذ الكود ، إرسال واستلام الأشياء ، إلخ) من Matlab v6 والإصدارات الأعلى محليًا أو على المضيف البعيد في رابط الخادم العميل. التفاصيل يمكن العثور عليها في وصف الحزمة. هذا هو الطريق لأولئك الذين يستخدمون مريحة Matlab. لم أحاول استخدام هذه الطريقة ولكن هناك إمكانية لربط Matlab و MQL بهذه الطريقة.


    الطريقة الثانية للتنفيذ هي استخدام حزم R حول هذا الموضوع. سنقوم باستكشافها.


    هناك ثلاث حزم أعرف أنها مرتبطة بموضوع هذا المقال:


    "deepnet" هي حزمة بسيطة تقوم بتنفيذ نماذج DN SAE و DN SRBM. طول مجموعة البيانات المدخلة في التعلم الخاضع للإشراف وغير المراقب هو نفسه. لا يعطي فرصة لإجراء ضبط دقيق للنظام على مرحلتين. تستخدم لاستكشاف واختبار النماذج في البداية.


    "darh" هي حزمة متطورة وواسعة النطاق لنمذجة DN SRBM. هناك نموذج لـ DN SAE لكنني فشلت في إطلاقه. هذه الحزمة للمستخدمين ذوي الخبرة ، لأنها تسمح بإنشاء وتوليف نموذج أي مستوى التعقيد. وهو يعتمد على البرامج الفريدة التي تقدمها Hinton في لغة m MatLab.


    "H2O" عبارة عن حزمة شاملة لتدريب الشبكات العميقة (ليس فقط عليها) على مجموعات كبيرة من البيانات (> 1 Гб) مكتوبة في ملفات csv.


    في التجارب التالية سنستخدم حزمة "deepnet".

    3.3. تحضير المدخلات والبيانات المستهدفة للتجربة


    اليوم تعدين البيانات لديه أمر عمل معين:


    اختيار بيانات المدخلات (دراسة ، تحليل ، تحضير أولي ، تقييم). كسر البيانات في مجموعات التدريب والتحقق والاختبار (العينات) ؛
    تدريب نموذج على مجموعة بيانات التدريب واختيار نموذج / نموذج على نموذج التحقق ؛
    تقييم جودة النموذج / النموذج على عينة الاختبار وتحديد بارامترات النماذج المثلى أو أفضل نموذج خارج المجموعة بواسطة تدابير معينة ؛
    السماح للنموذج / النماذج ببدء العمل.
    المرحلة الأولى هي الأكثر استهلاكا للوقت ومهمة للغاية بالنسبة للنتيجة النهائية. لكي نكون منصفين ، هذه المرحلة ليست رسمية ، وعموما ، إنها تقريبًا عبارة عن شكل فني. يعتمد الكثير على خبرة الباحث. ومع ذلك! من الأهمية بمكان الحصول على التقييمات الكمية لمجموعة البيانات المدخلة لاختيار أهمها. الاختيار التلقائي لأفضل المتغيرات لنموذج معين هو أفضل في هذه الحالة. يوفر R وظائف واسعة لمواجهة التحديات في جميع المراحل.


    لا تعتبر بيانات المصدر مهمة فقط ، ولكنها تحتوي أيضًا على الكثير من الجوانب التي يجب وضعها في الاعتبار. إنه يستحق مقالة منفصلة. وبما أن الهدف من هذه المقالة هو معرفة شيء معقد بكلمات بسيطة للغاية ، فسوف نناقش النقاط المهمة ولكن لن نتناول الكثير من التفاصيل.

    3.3.1. مصدر معلومات


    بالنسبة لتصنيفنا ، نحتاج إلى مجموعة من المتغيرات المستقلة (المدخلات) ومتغير الهدف. وبما أن الميزة الرئيسية للشبكات العميقة هي قدرتها على التعلم السريع على عينات مدخلات كبيرة ، دعنا نخلق مجموعة من بيانات المدخلات تضم 17 متنبئًا (11 مؤشرًا). يحتوي ZigZag على دور للمتغير الهدف. تحميل في ناقلات البيئة R من فتح ، عالية ، منخفضة ، إغلاق يقتبس 4000 أشرطة عميق. وتناقش طريقة القيام بذلك أدناه في وصف كتابة المؤشر. في هذه المرحلة ليست مهمة. سيتم تنفيذ جميع الحسابات الإضافية في R.


    بناء مصفوفة من 4 متجهات ومتوسط سعر وحجم هيئة شريط. تحويلها إلى وظيفة:

    كود PHP:
    pr.OHLC <- function (ohlc
    {
      
    #Unite quote vectors into a matrix having previously expanded them
      #Indexing of time series of vectors in R starts with 1. 
      #Direction of indexing is from old to new ones.   
      
    price <- cbind(Open rev(o), High rev(h), Low rev(l), Close rev(c))
      
    Med <- (price[, 2] + price[, 3])/2
      CO 
    <- price[, 4] - price[, 1]
      
    #add Med and CO to the matrix
      
    price <- cbind(priceMedCO)

    انظر النتيجة (حالة في 08.10. 2014 12:00)
    كود PHP:
    head(price)
            
    Open    High     Low   Close      Med     CO
    [1,] 1.33848 1.33851 1.33824 1.33844 1.338375 -4e-05
    [2,] 1.33843 1.33868 1.33842 1.33851 1.338550  8e-05
    [3,] 1.33849 1.33862 1.33846 1.33859 1.338540  1e-04
    [4,] 1.33858 1.33861 1.33856 1.33859 1.338585  1e-05
    [5,] 1.33862 1.33868 1.33855 1.33855 1.338615 -7e-05
    [6,] 1.33853 1.33856 1.33846 1.33855 1.338510  2e-05 
    3.3.2. بيانات المدخلات (Predictors)


    قائمة المؤشرات. تم اختيار المؤشرات عشوائياً ، بدون تفضيلات للحصول على أقصى فرق بين أحجام المدخلات.


    يتم حساب جميع المؤشرات باستخدام حزمة "TTR" التي تحتوي على العديد من المؤشرات.






    3.3.2.1. مؤشر حركة الاتجاه (Welles Wilder - ADX (HLC، n) - 4 Dip، Din، DX، ADX)


    احسب وشاهد كيف يبدو في أول 200 شريط:

    كود PHP:
    library(TTR)
    adx<-ADX(price16)
    plot.ts(head(adx200)) 
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 13. Indicator Welles Wilder's Directional Movement Index - ADX(HLC, n).PNG
المشاهدات:	22
الحجـــم:	45.7 كيلوبايت
الرقم:	493160
    كود PHP:
    summary(adx)
          
    DIp             DIn                DX                 ADX    
     Min
    .   :15.90   Min.   :  5.468   Min.   : 0.00831      Min.   : 5.482   
     1st Qu
    .:41.21   1st Qu.: 33.599   1st Qu.: 8.05849      1st Qu.:14.046 
     Median 
    :47.36   Median 43.216   Median :16.95423      Median :18.099
     Mean   
    :47.14   Mean   46.170   Mean   :19.73032      Mean   :19.609 
     3rd Qu
    .:53.31   3rd Qu.: 55.315   3rd Qu.:27.97471      3rd Qu.:23.961     
     Max
    .   :80.12   Max.   :199.251   Max.   :81.08751      Max.   :52.413
     NA
    's   :16      NA's   :16        NA's   :16            NA's   :31 
    في بداية المصفوفة هناك 31 قيمة غير محددة (NA). ثم نفذ الحسابات نفسها لجميع المؤشرات دون شرح مفصل.

    3.3.2.2.( aroon (HL، n - مخرج واحد (مذبذب)


    احسب وشاهد أول 200 شريط من متغير واحد فقط "مذبذب"
    كود PHP:
    ar<-aroon(price[ , c('High''Low')], 16)[ ,'oscillator']
    plot(head(ar200), "l")
    abline(0
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 14. Indicator aroon(HL, n).PNG
المشاهدات:	19
الحجـــم:	23.4 كيلوبايت
الرقم:	493168
    كود PHP:
    summary(ar)
       
    Min1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
    -100.00  -56.25  -18.75   -7.67   43.75  100.00      16 
    3.3.2.3. مؤشر قناة السلع - (CCI (HLC، n - خرج-1

    كود PHP:
    cci<-CCI(price[ ,2:4], 16)
    plot.ts(head(cci200))
    abline(0
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 15. Indicator Commodity Channel Index - CCI(HLC, n).PNG
المشاهدات:	26
الحجـــم:	26.7 كيلوبايت
الرقم:	493175
    كود PHP:
    summary(cci)
       
    Min1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
    -469.10  -90.95  -18.74  -14.03   66.91  388.20      15 


    3.3.2.4. (Chaikin Volatility - chaikinVolatility (HLC، n - خرج-1
    كود PHP:
    chv<-chaikinVolatility(price[ , 2:4], 16)
    summary(chv)
        
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA's 
    -0.67570 -0.29940  0.02085  0.12890  0.41580  5.15700       31 
    > plot(head(chv, 200), t = "l")
    > abline(h = 0) 
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 16..PNG
المشاهدات:	19
الحجـــم:	25.1 كيلوبايت
الرقم:	493176

    3.3.2.5. مذبذب زاود مومنتوم - CMO (Med, n) - خرج-1

    كود PHP:
    cmo<-CMO(price[ ,'Med'], 16)
    plot(head(cmo200), "l")
    abline(0
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 17..PNG
المشاهدات:	25
الحجـــم:	29.2 كيلوبايت
الرقم:	493177
    كود PHP:
    summary(cmo)
       
    Min.    1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
    -97.670 -32.650  -5.400  -6.075  19.530  93.080      16 
    3.3.2.6. يستخدم مؤشر MACD للتذبذب - (MACD (Med، nFast، nSlow، nSig) 1 (macd

    كود PHP:
    macd<-MACD(price[ ,'Med'], 12269)[ ,'macd']
    plot(head(macd200), "l")
    abline(0
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 18. Indicator MACD oscillator.PNG
المشاهدات:	29
الحجـــم:	24.9 كيلوبايت
الرقم:	493178
    كود PHP:
    summary(macd)
         
    Min.   1st Qu.    Median      Mean   3rd Qu.      Max.      NA's
    -0.346900 -0.025150 -0.005716 -0.011370  0.013790  0.088880      25 
    3.3.2.7. OsMA (Med، nFast، nSlow، nSig) - 1 out

    كود PHP:
    osma<-macd MACD(price[ ,'Med'],12269)[ ,'signal']
    plot(head(osma200), "l")
    abline(0
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 19. Indicator OsMA(Med,nFast, nSlow, nSig).PNG
المشاهدات:	16
الحجـــم:	28.4 كيلوبايت
الرقم:	493179
    كود PHP:
    summary(osma)
        
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max.     NA's 
    -0.10560 -0.00526  0.00034  0.00007  0.00646  0.05922       33 
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  3. #3
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    3.3.2.8. مؤشر القوة النسبية - RSI(Med,n) - خرج-1
    كود PHP:
    rsi<-RSI(price[ ,'Med'], 16)
    plot(head(rsi200), "l")
    abline(50
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 20. Indicator Relative Strength Index - RSI(Med,n).PNG
المشاهدات:	19
الحجـــم:	26.0 كيلوبايت
الرقم:	493180

    كود PHP:
    summary(rsi)
       
    Min1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
       5.32   37.33   47.15   46.53   55.71   84.82      16 
    3.3.2.9. Stochastic Oscillator - stoch (HLC، nFastK = 14، nFastD = 3، nSlowD = 3) - 3 out

    كود PHP:
    stoh<-stoch(price[ ,2:4], 1433)
    plot.ts(head(stoh200)) 
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 21. Indicator Stochastic Oscillator - stoch(HLC, nFastK=14, nFastD=3, nSlowD=3).PNG
المشاهدات:	28
الحجـــم:	46.6 كيلوبايت
الرقم:	493181

    كود PHP:
    summary(stoh)
         
    fastK            fastD             slowD        
     Min
    .   :0.0000   Min.   :0.01782   Min.   :0.02388  
     1st Qu
    .:0.2250   1st Qu.:0.23948   1st Qu.:0.24873  
     Median 
    :0.4450   Median :0.44205   Median :0.44113  
     Mean   
    :0.4622   Mean   :0.46212   Mean   :0.46207  
     3rd Qu
    .:0.6842   3rd Qu.:0.67088   3rd Qu.:0.66709  
     Max
    .   :1.0000   Max.   :0.99074   Max.   :0.97626  
     NA
    's   :13       NA's   :15        NA's   :17 
    3.3.2.10. مؤشر الزخم العشوائي - SMI (HLC، n = 13، nFast = 2، nSlow = 25، nSig = 9) - 2 out
    كود PHP:
    smi<-SMI(price[ ,2:4],13nFast 2nSlow 25nSig 9)
    plot.ts(head(smi200)) 
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 22. Indicator Stochastic Momentum Index - SMI(HLC, n = 13, nFast = 2, nSlow = 25, nSig = 9).PNG
المشاهدات:	18
الحجـــم:	31.8 كيلوبايت
الرقم:	493182

    كود PHP:
    summary(smi)
          
    SMI              signal       
     Min
    .   :-82.185   Min.   :-78.470  
     1st Qu
    .:-33.392   1st Qu.:-31.307  
     Median 
    : -9.320   Median : -8.839  
     Mean   
    : -8.942   Mean   : -8.985  
     3rd Qu
    .: 15.664   3rd Qu.: 14.069  
     Max
    .   : 71.878   Max.   : 63.865  
     NA
    's   :25        NA's   :33 
    3.3.2.11. التقلب (يانغ وتشانغ) - التقلب (OHLC ، n ، calc = "yang.zhang" ، N = 96) - خارج-1

    كود PHP:
    vol<-volatility(price[ ,1:4],16,calc "yang.zhang"=96)
    plot.ts(head(vol200)) 
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 23..PNG
المشاهدات:	31
الحجـــم:	26.9 كيلوبايت
الرقم:	493184
    كود PHP:
    summary(vol)
        
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max.      NA's
    0.000599 0.001858 0.002638 0.003127 0.004015 0.012840      16 
    ï»ںذا ، ï»ںدﯾﻧï؛ژ 17 ﻣï؛—ï»گﯾرا ﻣن 11 ﻣؤï؛·رًا ï»ںـ EURUSD ﻓﻲ اﻹطï؛ژر اï»ںزﻣﻧﻲ ï»ںـ 15 ﻣن أï؛ںل ﻋﯾﻧï؛” OHLC ﻋﻣﯾï»کï؛” 4000 ﻧï»کطï؛”.


    استخدمها لتشكيل مصفوفة وكتابة المعلمات أعلاه في وظيفة واحدة مع معلمة رسمية واحدة ، والتي ستكون مطلوبة للتحسين.


    حساب مصفوفة معلمات الإدخال باستخدام الصيغة:

    كود PHP:
    In<-function(16){
      
    adx<-ADX(pricep);
      
    ar<-aroon(price[ ,c('High''Low')], n=p)[ ,'oscillator'];
      
    cci<-CCI(price[ ,2:4], p);
      
    chv<-chaikinVolatility(price[ ,2:4], p);
      
    cmo<-CMO(price[ ,'Med'], p);
      
    macd<-MACD(price[ ,'Med'], 12269)[ ,'macd'];
      
    osma<-macd MACD(price[ ,'Med'],12269)[ ,'signal'];
      
    rsi<-RSI(price[ ,'Med'], p);
      
    stoh<-stoch(price[ ,2:4],1433);
      
    smi<-SMI(price[ ,2:4],pnFast 2nSlow 25nSig 9);
      
    vol<-volatility(price[ ,1:4],p,calc="yang.zhang"N=96);
      
    In<-cbind(adxarccichvcmomacdosmarsistohsmivol);
      return(
    In)

    كود PHP:
    X<-In()
    tail(X)
                 
    DIp      DIn       DX      ADX   ar      cci       chv
    [3995,] 46.49620 36.32411 12.28212 18.17544 25.0 168.0407 0.1835102
    [3996,] 52.99009 31.61164 25.26952 18.61882 37.5 227.7030 0.3189822
    [3997,] 58.11948 28.16241 34.72000 19.62515 37.5 145.2337 0.3448520
    [3998,] 56.00323 30.48687 29.50206 20.24245 37.5 118.5831 0.3068059
    [3999,] 55.96197 28.78737 32.06467 20.98134 37.5 116.5376 0.3517668
    [4000,] 54.97777 26.85440 34.36713 21.81795 62.5 160.0767 0.6169701
                 cmo         macd       osma      rsi     fastK
    [3995,] 29.71342 -0.020870825 0.01666593 52.91932 0.8832685
    [3996,] 41.89526 -0.009654368 0.02230591 61.49793 0.8833819
    [3997,] 30.98237 -0.002051532 0.02392699 58.94513 0.7259475
    [3998,] 33.84813  0.003454534 0.02354645 58.00549 0.7930029
    [3999,] 38.84892  0.009590136 0.02374564 60.63806 0.8367347
    [4000,] 54.71698  0.019303110 0.02676689 66.64815 0.9354120
                fastD     slowD        SMI    signal         vol
    [3995,] 0.7773581 0.7735064 -35.095406 -47.27712 0.003643196
    [3996,] 0.7691688 0.7761507 -26.482951 -43.11828 0.003858942
    [3997,] 0.8308660 0.7924643 -19.699762 -38.43458 0.003920541
    [3998,] 0.8007775 0.8002707 -13.141932 -33.37605 0.003916109
    [3999,] 0.7852284 0.8056239  -6.569699 -28.01478 0.003999789
    [4000,] 0.8550499 0.8136852   2.197810 -21.97226 0.004293766 
    يتم إعداد بيانات الإدخال الخام.

    3.3.3. بيانات المخرجات (الهدف)


    الآن نحن بصدد تشكيل الإخراج (البيانات المستهدفة). كما ذكرنا من قبل ، سوف نستخدم زجزاج.


    سنستخدم ZigZag بعرض القناة 37 نقطة كبيرة. سيتم حساب ZigZag حسب متوسط السعر. يمكن حساب المؤشر وفقاً لأسعار HL ، إلا أن متوسط السعر هو الأفضل لأن المؤشر أكثر استقرارًا في هذه الحالة. بعد استخراج الإشارة (0 - شراء ، 1 -Sell) ، قم بتحويلها إلى مصفوفة إدخال ، والتي تفترض نموذج الشبكة.


    اكتب وظيفة:
    كود PHP:
    Out<-function(ch=0.0037){
      
    # ZigZag has values on each bar and not only in the points 
      
    zz<-ZigZag(price[ ,'Med'], change chpercent Fretrace FlastExtreme T);
      
    n<-1:length(zz);
      
    # On the last bars substitute the undefined values for the last known ones
      
    for(i in n) { if(is.na(zz[i])) zz[i] = zz[i-1];}
      
    #Define the speed of ZigZag changes and move one bar forward
      
    dz<-c(diff(zz), NA);
      
    #If the speed >0 - signal = 0(Buy), if <0, signal = 1 (Sell) otherwise NA
      
    sig<-ifelse(dz>00, if else(dz<01NA));
      return(
    sig);


    حساب الاشارات.

    كود PHP:
    Y<-Out()
    table(Y)
    Y
       0    1 
    1567 2423 
    نسبة الطبقة غير متوازنة. عدد أمثلة فئة واحدة أكبر من الآخر. جميع نماذج التصنيف غير ودية تجاه هذه المجموعات.


    عند فصل البيانات إلى التدريب واختبار العينات ، سوف نقوم بتصحيح هذا الوضع.






    3.3.4. تنضيف البيانات


    قم بمسح مجموعات البيانات الخاصة بنا من البيانات غير المعرفة. المقاصة في هذه الحالة تعني جولة أوسع من المهام. ويشمل ذلك إزالة "المتغيرات صفر تقريبًا" والمتغيرات المرتفعة تمامًا بالإضافة إلى بعض المهام الأخرى التي لن نناقشها هنا.


    اكتب وظيفة وامسح البيانات
    كود PHP:
    Clearing<-function(xy){
      
    dt<-cbind(x,y);
      
    n<-ncol(dt)
      
    dt<-na.omit(dt)
      return(
    dt);  
    }
    dt<-Clearing(X,Y); nrow(dt)
    [
    13957 
    أصبحت المصفوفة 43 بارًا أقصر.






    3.3.5. تدريب واختبار تشكيل عينة


    هناك عدة طرق لكسر البيانات المصدر في عينات التدريب والاختبار. سنستخدم التقسيم العشوائي المنتظم لبيانات المصدر في القطار واختبار واحد بنسبة 8/10. من المهم أن تكون العينات متفاوتة ، مما يعني أن نسبة الحالات الطبقية في القطار وعينات الاختبار يجب أن تتوافق مع نسبة الطبقة في مجموعة بيانات المصدر. سيكون من المفيد أيضًا تصحيح عدم المساواة الطبقي في مجموعة البيانات المصدر. هناك طريقتان للقيام بذلك - إما التسوية بواسطة الطبقة الأكبر أو الصغيرة. نظرًا لأننا بحاجة إلى المزيد من الأمثلة ، فسوف نستقر على المستوى الأعلى "1". في هذه الحالة ، سنستخدم حزمة "الإقحام".


    دعونا نكوّن مجموعة متوازنة جديدة حيث يكون عدد مثيلات كل من الفئتين متماثلاً ويساوي الرقم الأكبر.






    3.3.6. موازنة الطبقة


    يوجد أدناه الدالة التي تحدد عدد الفئات حسب الجانب الأكبر (إذا كان الاختلاف أكبر من 15ظھ) وترجع إلى مصفوفة متوازنة

    كود PHP:
    Balancing<-function(DT){
      
    #Calculate a table with a number of classes
      
    cl<-table(DT[ ,ncol(DT)]);
      
    #If the divergence is less than 15%, return the initial matrix
      
    if(max(cl)/min(cl)<= 1.15) return(DT)
      
    #Otherwise level by the greater side
      
    DT<-if(max(cl)/min(cl)> 1.15){ 
             
    upSample(DT[ ,-ncol(DT)],= as.factor(DT[ , ncol(DT)]), yname "Y")
            }
      
    #Convert رƒ (factor) into a number
      
    DT$Y<-as.numeric(DT$Y)
      
    #Recode رƒ from 1,2 into 0,1
      
    DT$Y<-ifelse(DT$Y == 101)
      
    #Convert dataframe to matrix
      
    DT<-as.matrix(DT)
      return(
    DT);

    تفسير. في أول سلسلة حساب عدد مثيلات كل فئة (متجه ، مع البعد يساوي عدد الفئات).


    أوجد نسبة المتجه الأكبر إلى الأصغر وإذا كان أقل من الحد الأول المحدد ، قم بالخروج. إذا كانت النسبة أكبر ، قم بحساب الدالة ، بعد وضع ر… و y على حدة. يجب أن يتم تحويل Y مسبقًا إلى عامل.


    هذا هو المتطلب إلى المعلمات الرسمية للدالة upSample (). نظرًا لأننا لا نحتاج إلى متغير الهدف كعامل ، فإننا نعيده إلى رقم رقمي مع القيمتين 0 و 1. يرجى ملاحظة أنه عندما نقوم بتحويل متغير رقمي (0،1) إلى عامل ، فإننا نتلقى متغيرات نصية "0 " و 1". عند التحويل العكسي إلى متغيرات رقمية ، نحصل على 1 و 2 (!). نقوم باستبدالها بـ 0 و 1. يتم تحويل مجموعة البيانات الخاصة بنا من "إطار البيانات" إلى "مصفوفة" الفئة. احسبها:
    كود PHP:
    dt.b<-Balancing(dt)
    x<-dt.b[ ,-ncol(dt.b)]
    y<-dt.b[ , ncol(dt.b)] 
    بهذه الطريقة لدينا مجموعة بيانات dt المصدر (المدخلات والمخرجات) ومجموعة متوازنة dt.b.
    تقسيمه إلى عينات تدريب واختبار
    الحصول على مؤشرات من العينات تدريب واختبار من حزمة "rminer" باستخدام وظيفة holdout ().
    كود PHP:
    library('rminer')
    t<-holdout(yratio 8/10mode "random"
    الكائن t عبارة عن قائمة تحتوي على مؤشرات التدريب (t $ tr) ومجموعة اختبار (t $ ts). يتم استيفاء المجموعات المستلمة.






    3.3.7. التجهيز


    يحتوي مصدر بيانات الإدخال لدينا على متغيرات بنطاقات قيمة مختلفة. أساسا ، الشبكات العميقة هي شبكات منتظمة مع طريقة غريبة لتهيئة الأوزان.


    يمكن للشبكات العصبية أن تتلقى المتغيرات المدخلة في المدى (-1 ؛ 1) أو (0 ، 1). تطبيع متغيرات المدخلات في نطاق [-1 ، 1].


    لهذا الغرض تستخدم الدالة preProcess () من حزمة "الإقحام". يرجى ملاحظة أنه يجب حساب معلمات المعالجة المسبقة على مجموعة بيانات التدريب وحفظها لمزيد من المعالجة المسبقة لمجموعة بيانات الاختبار وبيانات المدخلات الحديثة.
    كود PHP:
    spSign<-preProcess(x[t$tr, ], method "spatialSign")
    x.tr<-predict(spSignx[t$tr, ])
    x.ts<-predict(spSignx[t$ts, ]) 
    الآن لدينا كل شيء لبناء وتدريب واختبار شبكة عصبية عميقة.






    3.4. نماذج البناء والتدريب والاختبار


    سنقوم ببناء وتدريب نموذج DN SAE. صيغة نموذج ووصف المتغيرات:
    كود PHP:
    sae.dnn.train(xyhidden c(10), activationfun "sigm"learningrate 0.8momentum 0.5learningrate_scale 1output "sigm"sae_output "linear",
      
    numepochs 3batchsize 100hidden_dropout 0visible_dropout 0


    المعلمات الرسمية:


    ر… عبارة عن مصفوفة لبيانات الإدخال ؛
    y هو متجه أو مصفوفة للمتغيرات المستهدفة ؛
    hidden هو ناقل مع عدد من الخلايا العصبية في كل طبقة مخفية. افتراضيا رپ (10) ؛
    activationfun هي وظيفة من تنشيط الخلايا العصبية الخفية. يمكن أن يكون "sigm" ، "linear" ، "tanh". افتراضيا "sigm" ؛
    learningrate هو مستوى التدريب لنسب التدرج. افتراضيا = 0.8؛
    momentum هو زخم للنزول التدرج. افتراضيا = 0.5 ؛
    learningrate_scale يمكن مضاعفة مستوى التدريب التعلقي_المترقب بهذه القيمة بعد كل عملية تكرار. افتراضيا = 1.0؛
    numepochs هو عدد من التكرارات للتدريب. افتراضيا = 3؛
    batchsize هو حجم كمية صغيرة من البيانات التي يتم تدريبها. افتراضيا = 100؛
    output هو وظيفة التنشيط للخلايا العصبية الإخراج يمكن أن يكون "sigm" ، "خطي" ، "softmax". افتراضيا "sigm" ؛
    sae_output هو وظيفة التنشيط للخلايا العصبية الخرجية من SAE ، يمكن أن يكون "sigm" ، "linear" ، "softmax". افتراضيا "خطي" ؛
    hidden_dropout هو جزء يمكن حذفه للطبقات المخفية. افتراضيا = 0؛
    visual_dropout يعد visual_dropout جزءًا قابلاً للطبقة من طبقة (الإدخال) المرئية. افتراضيا = 0.


    سنقوم بإنشاء نموذج بالأبعاد التالية (17 ، 100 ، 100 ، 100 ، 1) ، وتدريبه ، وملاحظة وقت التعلم ومراقبة التوقعات.
    كود PHP:
    system.time(SAE<-sae.dnn.train(xx.tryy[t$tr], hidden=c(100,100,100), activationfun "tanh"learningrate 0.6momentum 0.5learningrate_scale 1.0output "sigm"sae_output "linear"numepochs 10batchsize 100hidden_dropout 0visible_dropout 0))
    begin to train sae ......
    training layer 1 autoencoder ...
    training layer 2 autoencoder ...
    training layer 3 autoencoder ...
    sae has been trained.
    begin to train deep nn ......
    deep nn has been trained.
       
    user  system elapsed 
      12.92    0.00   13.09 

    كما نرى ، يحدث على مرحلتين. في البداية يحصل autocoder المدربين طبقة طبقة ثم الشبكة العصبية.


    تم تعيين عدد صغير من أوقات التدريب وعدد هائل من الخلايا العصبية الخفية في ثلاث طبقات عن قصد. استغرقت العملية بأكملها 13 ثانية!


    دعونا تقييم التوقعات على مجموعة اختبار من تنبئ.
    كود PHP:
    pr.sae<-nn.predict(SAEx.ts);
    summary(pr.sae)
           
    V1        
     Min
    .   :0.2649  
     1st Qu
    .:0.2649  
     Median 
    :0.5881  
     Mean   
    :0.5116  
     3rd Qu
    .:0.7410  
     Max
    .   :0.7410 
    تحويل إلى مستويات 0،1 وحساب القياسات
    كود PHP:
    pr<-ifelse(pr.sae>mean(pr.sae), 10)
    confusionMatrix(y[t$ts], pr)
    Confusion Matrix and Statistics
     
              Reference
    Prediction   0   1
             0 316 128
             1 134 378
                                             
                   Accuracy 
    0.7259         
                     95
    CI : (0.69650.754)
        
    No Information Rate 0.5293         
        P
    -Value [Acc NIR] : <2e-16         
                                             
                      Kappa 
    0.4496         
     Mcnemar
    's Test P-Value : 0.7574         
                                             
                Sensitivity : 0.7022         
                Specificity : 0.7470         
             Pos Pred Value : 0.7117         
             Neg Pred Value : 0.7383         
                 Prevalence : 0.4707         
             Detection Rate : 0.3305         
       Detection Prevalence : 0.4644         
          Balanced Accuracy : 0.7246         
                                             
           '
    Positive' Class : 0 
    هذا ليس معامل بارز. نحن مهتمون أكثر بالربح الذي سنجريه باستخدام هذه الإشارات ، وليس المعامل. التحقق من ذلك على آخر 500 شريط (ما يقرب من أسبوع). سوف نتلقى إشارات على آخر 500 شريط متسلسل من شبكتنا المدربة.


    تطبيع آخر 500 شريط إدخال البيانات ، وتلقي توقعات من الشبكة العصبية المدربة وتحويلها إلى إشارات -1 = (بيع) و 1 = (شراء)
    كود PHP:
    > new.x<-predict(spSign,tail(dt[ ,-ncol(dt)], 500))
    pr.sae1<-nn.predict(SAE, new.x)
    pr.sig<-ifelse(pr.sae1>mean(pr.sae1), -11)
    table(pr.sig)
    pr.sig
     
    -1   1 
    235 265 
    > new.y<-ifelse(tail(dt[  , ncol(dt)], 500) == 01, -1)
    table(new.y)
    new.
    y
     
    -1   1 
    201 299 
    cm1<-confusionMatrix(new.ypr.sig)
    cm1
    Confusion Matrix 
    and Statistics
     
              Reference
    Prediction  
    -1   1
            
    -1 160  41
            1   75 224
                                              
                   Accuracy 
    0.768           
                     95
    CI : (0.72850.8043)
        
    No Information Rate 0.53            
        P
    -Value [Acc NIR] : < 2.2e-16       
                                              
                      Kappa 
    0.5305          
     Mcnemar
    's Test P-Value : 0.002184        
                                              
                Sensitivity : 0.6809          
                Specificity : 0.8453          
             Pos Pred Value : 0.7960          
             Neg Pred Value : 0.7492          
                 Prevalence : 0.4700          
             Detection Rate : 0.3200          
       Detection Prevalence : 0.4020          
          Balanced Accuracy : 0.7631          
                                              
           '
    Positive' Class : -1 

    إن معامل الدقة ليس سيئًا ، على الرغم من أننا مهتمون أكثر بالربح ، وليس بالمعامل.


    اختبار الربح لآخر 500 شريط باستخدام إشاراتنا المتوقعة والحصول على منحنى الرصيد:

    كود PHP:
    bal<-cumsum(tail(price[ , 'CO'], 500) * pr.sig)
    plot(bal"l")
    abline(0
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 24. Balance on the last 500 bars by the neural network signals.PNG
المشاهدات:	125
الحجـــم:	30.8 كيلوبايت
الرقم:	493185

    تم حساب الرصيد دون الأخذ في الاعتبار فروق الأسعار والانعكاسات والحقائق الأخرى للسوق المباشرة.


    الآن قارن مع التوازن الذي كان يمكن الحصول عليه من الإشارات المثالية من ZZ. الخط الأحمر هو التوازن بواسطة إشارات الشبكة العصبية:

    كود PHP:
    bal.zz<-cumsum(tail(price[ , 'CO'], 500) * new.y)
    plot(bal.zz,  "l")
    lines(bal,  col 2
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 25. Balance on the last 500 bars by the neural network signals and the ZigZag signals.PNG
المشاهدات:	81
الحجـــم:	34.9 كيلوبايت
الرقم:	493186

    هناك احتمالات للتحسين.


    اكتب وظيفتين لتسهيل وظيفتين مساعدتين Estimation() Testing(). الأول سيولد معاملات الدقة / خطأ والرصيد الثاني التوازن بال / بالز.


    وهو يتيح الحصول على نتيجة مباشرة لتغيير بعض معلمات الشبكة ومعرفة العوامل التي تؤثر على جودة الشبكة.


    بعد كتابة وظيفة اللياقة البدنية ، يمكن العثور على معلمات الشبكة المثلى باستخدام خوارزمية (جينية) تطورية دون أي اضطرابات في عملية التداول. لن نخصص وقتًا لها في هذه المقالة وسننظر فيها بالتفصيل في وقت آخر.


    يوجد أدناه الدالة Estimation () حساب المعاملات Err / Accuracy:
    كود PHP:
    Estimation<-function(XY8/10"random"norm "spatialSign",
                         
    c(10), act "tanh"LR 0.8Mom 0.5
                         
    out "sigm"sae "linear"Ep 10Bs 50
                         
    CM=F){
      
    #Indices of the training and test data set
      
    t<-holdout(Yratio rmode m)
      
    #Parameters of preprocessing
      
    prepr<-preProcess(X[t$tr,  ], method norm)
      
    #Divide into train and test data sets with preprocessing 
      
    x.tr<-predict(preprX[t$tr,  ])
      
    x.ts<-predict(preprX[t$ts,  ])
      
    y.tr<- Y[t$tr]; y.ts<- Y[t$ts]
      
    #Train the model
      
    SAE<-sae.dnn.train(x.tr y.tr hidden h
                         
    activationfun act,
                         
    learningrate LRmomentum Mom
                          
    output outsae_output sae
                         
    numepochs Epbatchsize Bs)
      
    #Obtain a forecast on the test data set
      
    pr.sae<-nn.predict(SAEx.ts)
      
    #Recode it into signals 1,0
      
    pr<-ifelse(pr.sae>mean(pr.sae), 10)
      
    #Calculate the Accuracy coefficient or classification error
      
    if(CMerr<-unname(confusionMatrix(y.tspr)$overall[1])
      if(!
    CMerr<-nn.test(SAEx.tsy.tsmean(pr.sae))
      return(
    err)

    المعلمات الرسمية:


    X- مصفوفة من تنبؤات المدخلات الخام
    Y - متجه للمتغير المستهدف
    r - نسبة القطر / الاختبار
    m - طريقة تشكيل العينة (عشوائية أو لاحقة)
    norm - وضع معلمات الإدخال تطبيع ([-1، 1] = "spatialSign"؛ [0، 1] = "نطاق")
    h - متجه مع عدد من الخلايا العصبية في الطبقات المخفية
    act- وظيفة تفعيل الفعل للخلايا العصبية المخفية
    LR - مستوى التدريب
    ذœذ¾ذ¼ - زخم
    out - وظيفة التنشيط للخارج
    sae - تفعيل وظيفة autoencoder
    Ep - عدد مرات التدريب
    Bs - حجم العينة الصغيرة
    ذ،M– متغير منطقي ، إذا كانت دقة الطباعة TRUE. عدا ذلك


    وكمثال على ذلك ، سنقوم بحساب خطأ التصنيف على مجموعة البيانات غير المتوازنة dt بواسطة الشبكة مع ثلاث طبقات مخفية تحتوي كل منها على 30 خلية عصبية:
    كود PHP:
    Err<-Estimation(dt[ ,-ncol(dt)], dt[ ,ncol(dt)], h=c(303030), LR0.7)
    begin to train sae ......
    training layer 1 autoencoder ...
    training layer 2 autoencoder ...
    training layer 3 autoencoder ...
    sae has been trained.
    begin to train deep nn ......
    deep nn has been trained.
    Err
    [10.1376263 
    تقوم الدالة Testing () بحساب الرصيد بواسطة إشارات التنبؤ أو من خلال العلامات المثالية (ZigZag):

    كود PHP:
    Testing<-function(dt1dt2r=8/10"random"norm "spatialSign",
                         
    c(10), act "tanh"LR 0.8Mom 0.5
                         
    out "sigm"sae "linear"Ep 10Bs=50
                         
    pr Tbar 500){
      
    X<-dt1[  ,-ncol(dt1)]
      
    Y<-dt1[  ,ncol(dt1)]
      
    t<-holdout(Y,  ratio r,  mode m)
      
    prepr<-preProcess(X[t$tr,  ], method norm)
      
    x.tr<-predict(preprX[t$tr,  ])
      
    y.tr<- Y[t$tr]; 
      
    SAE<-sae.dnn.train(x.tr y.tr hidden h
                         
    activationfun act,
                         
    learningrate LRmomentum Mom
                         
    output outsae_output sae
                         
    numepochs Epbatchsize Bs)
      
    X<-dt2[ ,-ncol(dt2)]
      
    Y<-dt2[ ,ncol(dt2)]
      
    x.ts<-predict(preprtail(Xbar))
      
    y.ts<-tail(Ybar)
      
    pr.sae<-nn.predict(SAEx.ts)
      
    sig<-ifelse(pr.sae>mean(pr.sae), -11)
      
    sig.zz<-ifelse(y.ts == 01,-)
      
    bal<-cumsum(tail(price[  ,'CO'], bar) * sig)
      
    bal.zz<-cumsum(tail(price[  ,'CO'], bar) * sig.zz)
      if(
    pr) return(bal)
      if(!
    pr) return(bal.zz)

    المعلمات الرسمية:


    dt1 - مصفوفة المدخلات ومتغير الهدف المستخدم لتدريب الشبكة ؛
    dt2 - مصفوفة المدخلات والمتغيرات المستهدفة المستخدمة لاختبار الشبكة ؛
    pr - المتغير المنطقي ، إذا كانت TRUE تطبع التوازن بواسطة إشارات التنبؤ ، وبخلاف ZigZag ؛
    bar - عدد الأشرطة الأخيرة المستخدمة في حساب الرصيد.


    احسب التوازن على آخر 500 شريط من مجموعة البيانات dt عند التدريب على مجموعة البيانات المتوازنة dt.b بواسطة الشبكة العصبية مع نفس المعلمات المذكورة أعلاه:

    كود PHP:
    Bal<-Testing(dt.bdth=c(303030), LR0.7)
    begin to train sae ......
    training layer 1 autoencoder ...
    training layer 2 autoencoder ...
    training layer 3 autoencoder ...
    sae has been trained.
    begin to train deep nn ......
    deep nn has been trained.
    plot(Bal"l")
    abline(0
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 26. Balance on the last 500 bars by the neural network signals h(30,30,30).PNG
المشاهدات:	43
الحجـــم:	27.1 كيلوبايت
الرقم:	493187
    إذا قارنا النتيجة مع الرصيد الذي تم الحصول عليه سابقا ، يمكننا أن نرى تحسنًا كبيرًا. هذه ليست أكثر نقطة مثيرة للاهتمام هنا على الرغم من.


    إذا ألقينا نظرة على مؤامرة السعر على آخر 500 شريط ، فيمكننا أن نرى ما هي الأجزاء المقبولة من شبكتنا (150-350 بار).
    كود PHP:
    plot(tail(price[  ,'Close'], 500), "l")
    abline(c(150,350), col=2
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 27. Plot of the Close price on the last 500 bars.PNG
المشاهدات:	22
الحجـــم:	35.9 كيلوبايت
الرقم:	493188
    ملاحظة: عند فك ترميز مخرجات التنبؤ ، استخدمنا نسخة مبسطة أكبر / أقل من المتوسط ، على الرغم من أنه يمكن استخدام إصدارات أخرى.


    إذا كانت القيم أكبر من 0.6 أو أقل من 0.4 ، يتم قطع الجزء غير المستقر من 0.4-0.6. يمكن الحصول على حدود الطبقة أكثر دقة في المعايرة. هذا سوف يتم مناقشته لاحقا.


    سوف تتغير الدالة Testing () الخاصة بنا قليلاً إذا تم إدخال معلمة إضافية. سيسمح لنا ذلك باختيار طريقة لفك شفرة ("يعني" أو "60/40") والتحقق من القيم المتوقعة لأثر ذلك على التوازن.
    كود PHP:
    Testing.1<-function(dt1dt28/10"random"norm "spatialSign",
                         
    c(10), act "tanh"LR 0.8Mom 0.5
                         
    out "sigm"sae "linear"Ep 10Bs 50
                         
    pr Tbar 500dec=1){
      
    X<-dt1[ ,-ncol(dt1)]
      
    Y<-dt1[ ,ncol(dt1)]
      
    t<-holdout(Yratio rmode m)
      
    prepr<-preProcess(X[t$tr, ], method norm)
      
    x.tr<-predict(preprX[t$tr, ])
      
    y.tr<- Y[t$tr]; 
      
    SAE<-sae.dnn.train(x.tr y.tr hidden h
                         
    activationfun act,
                         
    learningrate LRmomentum Mom
                         
    output outsae_output sae
                         
    numepochs Epbatchsize Bs)
      
    X<-dt2[ ,-ncol(dt2)]
      
    Y<-dt2[ ,ncol(dt2)]
      
    x.ts<-predict(preprtail(Xbar))
      
    y.ts<-tail(Ybar)
      
    pr.sae<-nn.predict(SAEx.ts)
      
    #Variant +/- mean
      
    if(dec == 1sig<-ifelse(pr.sae>mean(pr.sae), -11)
      
    #Variant 60/40
      
    if(dec == 2sig<-ifelse(pr.sae>0.6, -1ifelse(pr.sae<0.410))
      
    sig.zz<-ifelse(y.ts == 01,-)
      
    bal<-cumsum(tail(price[  ,'CO'], bar) * sig)
      
    bal.zz<-cumsum(tail(price[  ,'CO'], bar) * sig.zz)
      if(
    pr) return(bal)
      if(!
    pr) return(bal.zz)


    حساب وتقييم التوازن مع الطرق الأولى والثانية لفك.


    من أجل تكرار النتائج ، قم بتعيين مولد رقم شبه عشوائي في نفس الموضع.

    كود PHP:
    set.seed<-1245
    Bal1<-Testing.1(dt.bdtc(303030), LR 0.7dec 1)
    begin to train sae ......
    training layer 1 autoencoder ...
    training layer 2 autoencoder ...
    training layer 3 autoencoder ...
    sae has been trained.
    begin to train deep nn ......
    deep nn has been trained.
    set.seed<-1245
    Bal2<-Testing.1(dt.bdtc(303030), LR 0.7dec 2)
    begin to train sae ......
    training layer 1 autoencoder ...
    training layer 2 autoencoder ...
    training layer 3 autoencoder ...
    sae has been trained.
    begin to train deep nn ......
    deep nn has been trained.
    plot(Bal2"l")
    lines(Bal1col 2
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 28. Balance for the last 500 bars by the neural network signals with different ways of deco.PNG
المشاهدات:	49
الحجـــم:	37.4 كيلوبايت
الرقم:	493190

    من الواضح أن التوازن في الطريقة الثانية 60/40 يبدو أفضل. هناك مساحة للتحسين في هذا الجانب أيضا.


    هنا هو آخر شيء للتحقق. نظريا ، مجموعة من الشبكات العصبية المتعددة تعطي نتائج أفضل وأكثر استقرارا. سنقوم باختبار مجموعة تتكون من عدة شبكات ، يتم تدريبهم على نفس العينات على الرغم من أنه يمكن تدريبهم على عينات مستقلة. نتيجة لتوقعات الفرقة هو متوسط ​​بسيط لتوقعات جميع الشبكات. هناك طرق أخرى أكثر تعقيدًا في المتوسط.


    سنقوم بتحسين وظيفتنا Testing () بإضافة معلمة أخرى - ans = 1 تحدد عدد الشبكات في المجموعة.






    3.4.1. الحسابات المتوازية


    بما أن العمليات الحسابية من قبل العديد من النماذج المستقلة يمكن موازيتها بسهولة ، فإننا سنستخدم الفرصة التي توفرها لغة R وإنشاء مجموعة تتكون من عدة نوى للمعالج أو أجهزة كمبيوتر لشبكات محلية بغض النظر عن أنظمة التشغيل التي تمتلكها هذه الأجهزة.


    لذلك نحن بحاجة إلى "foreach" وحزم "doParallel موازية". فيما يلي وظيفة بسيطة للغاية ستطلق العنقود لجميع مراكز المعالج.
    كود PHP:
    library(doParallel)
    library(foreach)
    puskCluster<-function(){
      
    cores<-detectCores()
      
    cl<-makePSOCKcluster(cores)
      
    registerDoParallel(cl)
      
    clusterSetRNGStream(cl)
     return(
    cl)

    يتم توضيح عدة نقاط أدناه. في أول سلسلتين نقوم بتحميل المكتبات الضرورية. يجب أن يتم تثبيتها مسبقًا على جهاز الكمبيوتر الخاص بك. ثم نحدد عدد النوى الموجودة في المعالج ، وننشئ كتلة ، ونسجل حزمة للحسابات المتوازية ، وننشئ مولد أرقام عشوائية عشوائية مستقلة في كل تدفق من الحسابات ، ونرجع مقبض الكتلة. إن جودة مولد الرقم العشوائي العشوائي للحسابات من كل طراز مهمة للغاية رغم أن هذا موضوع منفصل.


    بعد إطلاق المجموعة وجميع الحسابات المطلوبة ، يجب أن نتذكر إيقافها:
    كود PHP:
    cl<-puskCluster()
    stopCluster(cl
    سيتم تنفيذ الحسابات المتوازية بواسطة الصيغة التالية من حزمة "foreach":

    كود PHP:
    SAE<-foreach(times(ans), .packages "deepnet") %dopar%  
                    
    sae.dnn.train(x.tr y.tr hidden h
                            
    activationfun act,
                            
    learningrate LRmomentum Mom
                            
    output outsae_output sae
                            
    numepochs Epbatchsize Bs

    حيث الأوقات (ans) عبارة عن عدد من الشبكات التي نريد الحصول عليها و. حزم تشير إلى الحزمة لأخذ الدالة المحسوبة.


    والنتيجة لها شكل من أشكال القائمة وتحتوي على عدد الشبكات المدربة التي نحتاجها.


    ثم نطلب التنبؤ من كل شبكة ونحسب المتوسط.

    كود PHP:
    pr.sae<-(foreach(1:ans, .combine "+") %do%  nn.predict(SAE[[i]], x.ts))/ans 
    هنا i هو متجه لمؤشرات الشبكة المدربة ، .combine = "+" يحدد الشكل الذي من المفترض أن يتم إرجاعه للتنبؤات المرتجعة في جميع الشبكات العصبية. في هذه الحالة نحن مطالبون بإرجاع مبلغ وتنفيذ هذه الحسابات بالتسلسل ، وليس بطريقة متوازية (المشغلظھ لاظھ). سيتم تقسيم المبلغ الذي تم الحصول عليه عن طريق عدد الشبكات العصبية وستكون النتيجة النهائية. هذا لطيف وبسيط.


    حساب التوازن الذي تم الحصول عليه من المجموعات المكونة من 3 و 4 شبكات عصبية مع نفس المعلمات الموجودة أعلاه واستخدام طريقة فك التشفير 60/40. مقارنة مع النتائج على شبكة عصبية واحدة. لتقييم فعالية الحسابات الموازية ، زيادة عدد الحقب إلى 300 والوقت عملية الحصول على التنبؤ.


    1. واحد الشبكة العصبية:
    كود PHP:
    system.time(Bal21<-Testing.1(dt.bdtc(303030), LR 0.7dec 2Ep=300))
    begin to train sae ......
    training layer 1 autoencoder ...
    ####loss on step 10000 is : 0.000057
    ####loss on step 20000 is : 0.000043
    training layer 2 autoencoder ...
    ####loss on step 10000 is : 0.000081
    ####loss on step 20000 is : 0.000086
    training layer 3 autoencoder ...
    ####loss on step 10000 is : 0.000072
    ####loss on step 20000 is : 0.000066
    sae has been trained.
    begin to train deep nn ......
    ####loss on step 10000 is : 0.069451
    ####loss on step 20000 is : 0.079629
    deep nn has been trained.
       
    user  system elapsed 
     115.78    0.00  116.96 
    plot(Bal21"l")
    abline(0
    2. مجموعة من 3 شبكات عصبية:
    كود PHP:
    system.time(Bal41<-Testing.2(dt.bdtc(303030), LR 0.7Ep=300dec 2ans=3))
       
    user  system elapsed 
       0.22    0.06  233.64 
    lines(Bal41col=4
    3. مجموعة من 4 شبكات عصبية:
    كود PHP:
    system.time(Bal44<-Testing.2(dt.bdtc(303030), LR 0.7Ep=300dec 2ans=4))
       
    user  system elapsed 
       0.13    0.03  247.86 
    lines(Bal44col=2
    يكون وقت التنفيذ في الحساب المتوازي هو الأمثل إذا كان عدد التدفقات مضاعفًا لعدد المراكز. لقد استخدمت النوى 2.


    أقول ذلك ، لا توجد مزايا كبيرة في الميزان. في الرسم البياني أدناه ، تشير الخريطة الزرقاء إلى 3 شبكات ، وهي الشبكة الحمراء - 4 شبكات والشبكة السوداء - شبكة واحدة.
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 29. Balance on the last 500 bars by the signals of the ensembles consisting of 3 and 4 neur.PNG
المشاهدات:	27
الحجـــم:	41.3 كيلوبايت
الرقم:	493191
    بشكل عام ، تعتمد النتيجة على العديد من المعلمات ، بدءا من بيانات المدخلات والمخرجات ، وطريقة تطبيعها ، وعدد الطبقات المخفية وعدد الخلايا العصبية في تلك الطبقات ، ومستوى التدريب ، وعدد مرات التدريب وغيرها الكثير.


    آخر ثلاثة أمثلة. احسب التوازن على آخر 1000 شريط بثلاث شبكات عصبية بأعداد مختلفة من الخلايا العصبية المخفية في ثلاث طبقات مخفية.

    كود PHP:
    system.time(Bal0<-Testing.1(dt.bdtc(303030), LR 0.7dec 2Ep=300bar=1000))
    begin to train sae ......
    training layer 1 autoencoder ...
    ####loss on step 10000 is : 0.000054
    ####loss on step 20000 is : 0.000044
    training layer 2 autoencoder ...
    ####loss on step 10000 is : 0.000078
    ####loss on step 20000 is : 0.000079
    training layer 3 autoencoder ...
    ####loss on step 10000 is : 0.000090
    ####loss on step 20000 is : 0.000072
    sae has been trained.
    begin to train deep nn ......
    ####loss on step 10000 is : 0.072633
    ####loss on step 20000 is : 0.057917
    deep nn has been trained.
       
    user  system elapsed 
     116.09    0.02  116.26 
    max(Bal0)
    [
    10.04725
    plot(Bal0t="l")
    tail(Bal0,1)
    [
    10.03514 
    أقصى ربح هو 472 نقطة ، في العمود الأخير 351 نقطة. على الرسم البياني يتم رسمها باللون الأسود.
    كود PHP:
    system.time(Bal0<-Testing.1(dt.bdtc(1385), LR 0.7dec 2Ep=300bar=1000))
    begin to train sae ......
    training layer 1 autoencoder ...
    ####loss on step 10000 is : 0.005217
    ####loss on step 20000 is : 0.004846
    training layer 2 autoencoder ...
    ####loss on step 10000 is : 0.051324
    ####loss on step 20000 is : 0.046230
    training layer 3 autoencoder ...
    ####loss on step 10000 is : 0.023292
    ####loss on step 20000 is : 0.026113
    sae has been trained.
    begin to train deep nn ......
    ####loss on step 10000 is : 0.057788
    ####loss on step 20000 is : 0.056932
    deep nn has been trained.
       
    user  system elapsed 
      64.04    0.01   64.24 
    Warning message
    :
    In sae$encoder[[1]]$W[[1]] %*% t(train_x) + sae$encoder[[-  :
      
    longer object length is not a multiple of shorter object length
    lines(Bal0col="blue"
    ومن الواضح أن هذا اختلاف غير فعال.


    الشكل الثالث:
    كود PHP:
    system.time(Bal0<-Testing.1(dt.bdtc(505050), LR 0.7dec 2Ep=300bar=1000))
    begin to train sae ......
    training layer 1 autoencoder ...
    ####loss on step 10000 is : 0.000018
    ####loss on step 20000 is : 0.000013
    training layer 2 autoencoder ...
    ####loss on step 10000 is : 0.000062
    ####loss on step 20000 is : 0.000048
    training layer 3 autoencoder ...
    ####loss on step 10000 is : 0.000053
    ####loss on step 20000 is : 0.000055
    sae has been trained.
    begin to train deep nn ......
    ####loss on step 10000 is : 0.096490
    ####loss on step 20000 is : 0.084860
    deep nn has been trained.
       
    user  system elapsed 
     186.18    0.00  186.39 
    lines(Bal0col="red")
    max(Bal0)
    [
    10.0543 
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  4. #4
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 30. Balance on the last 1000 bars by the signals of three neural networks with different nu.PNG
المشاهدات:	76
الحجـــم:	42.0 كيلوبايت
الرقم:	493192

    وأظهرت النتائج أن البديل الثالث هو الأفضل من بين الثلاثة مع أقصى ربح قدره 543 نقطة. لقد غيرنا فقط عدد الخلايا العصبية الخفية وأدى ذلك إلى تحسن كبير. يجب أن يتم البحث عن المعلمات المثلى من خلال الخوارزميات التطورية. هذا متروك للقارئ لاستكشاف.


    يجب الانتباه إلى أن خوارزمية المؤلف لم يتم تنفيذها بالكامل في هذه الحزمة.






    4. التنفيذ (المؤشر والمستشار الخبير)
    الآن سنقوم بكتابة برنامج للمؤشر و Expert Advisor باستخدام شبكة عميقة لتلقي إشارات التداول.


    هناك طريقتان لهذا التنفيذ:


    الاول. يتم تنفيذ تدريب الشبكة العصبية في Rstudio يدويا. بعد الحصول على نتائج مقبولة ، احفظ الشبكة في الكتالوج المناسب. ثم قم بتشغيل EA ومؤشر على الرسم البياني. سوف EA تحميل الشبكة المدربة. يعد المؤشر ناقل بيانات إدخال جديدة على كل شريط جديد ويمررها إلى EA. تقدم EA بيانات الشبكة ، وتتلقى إشارة ثم تعمل على ذلك. تستمر EA مع أنشطتها المعتادة مثل أوامر الفتح والإغلاق ، وما إلى ذلك. الهدف من هذا المؤشر هو إعداد البيانات الجديدة للدخول إلى EA ونقلها إلى كل شريط جديد ، والأهم من ذلك ، توقع الإشارات الحالية بواسطة الشبكة على الرسم البياني. تُظهر الممارسة أن التحكم المرئي هو الطريقة الأكثر فعالية لتقييم الشبكة العصبية.
    الطريق الثاني. إطلاق EA والمؤشر على الرسم البياني. في أول إطلاق ، يمر المؤشر إلى EA مجموعة كبيرة من البيانات المدخلة والمخرجات. EA تطلق التدريب والاختبار واختيار أفضل الشبكات العصبية. بعد أن يستمر هذا العمل كما في الطريقة الأولى.
    سنقوم بكتابة مؤشر الارتباط -AA بعد الخوارزمية الأولى. EA مع الحد الأدنى من الأقواس والرتوش.


    لماذا هو صعب جدا؟ تسمح طريقة التنفيذ هذه بتوصيل العديد من المؤشرات الموضوعة على رموز / أطر زمنية مختلفة إلى EA واحد والعمل معها بالتالي. لذلك ، فإن EA يجب أن تمر بعملية تحديث بسيطة. سوف نتحدث عنها لاحقا.


    أدناه هو هيكل التفاعل بين المؤشر و EA:
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 31. Structure of interaction between the indicator and the EA.PNG
المشاهدات:	31
الحجـــم:	77.2 كيلوبايت
الرقم:	493193

    4.1. التدريب وحفظ النموذج


    باستخدام المؤشر الموضوعة على الرسم البياني لمصلحتنا ، احصل على بيانات المصدر الضرورية. لذلك ، ضع المؤشر على المخطط ، بعد تعيين متغير إدخال send = false ، بمعنى أنه ليس من المفترض أن يتم إرسال التمثيل المرئي إلى الخادم. عند الإطلاق الأول على هذا الرمز أو الإطار الزمني ، فإن المؤشر هو إنشاء الدلائل / Symbol / TF / Test_Data / التالية في ملف البيانات الخاص بالطرف (/ MQL4 / Files).


    يعطي مثل هذا التنظيم من الدلائل فرصة عدم وضع نتائج التجربة معًا في التدريب الأولي للنماذج وعدم الكتابة فوق البيانات القديمة بأخرى جديدة. سيتم تخزين نتائج وسيط في الدليل / Symbol / TF / Test_Data / وسيتم وضع النموذج الذي ستستخدمه EA للعمل في / Symbol / TF / (يجب وضعه يدويًا). ستكون النتيجة نفسها عند الإطلاق الأول على رمز جديد أو الإطار الزمني لـ EA.


    لذا ، بالنسبة ل EURUSD ، М30 ، هناك 4000 شريط في 14.10.2014. نحن بحاجة إلى dt [] dataframe.


    فئات الرصيد:
    كود PHP:
    dt.b<-Balancing(dt)
    table(dt.b[ ,ncol(dt.b)])
       
    0    1 
    2288 2288 
    الآن ، مع وظيفة مكتوبة سابقا Testing.1 () ، وتدريب الشبكة العصبية العميقة مع 500 و 300 حقب وتقييم التوازن التي تم الحصول عليها على آخر 500 شريط من قبل الإشارات المتوقعة من قبل الشبكة العصبية.
    كود PHP:
    system.time(bal<-Testing.1(dt.bdtc(505050), LR 0.7dec 2Ep=500bar=500))
    begin to train sae ......
    training layer 1 autoencoder ...
    ####loss on step 10000 is : 0.000017
    ####loss on step 20000 is : 0.000015
    ####loss on step 30000 is : 0.000015
    training layer 2 autoencoder ...
    ####loss on step 10000 is : 0.000044
    ####loss on step 20000 is : 0.000041
    ####loss on step 30000 is : 0.000039
    training layer 3 autoencoder ...
    ####loss on step 10000 is : 0.000042
    ####loss on step 20000 is : 0.000042
    ####loss on step 30000 is : 0.000036
    sae has been trained.
    begin to train deep nn ......
    ####loss on step 10000 is : 0.089417
    ####loss on step 20000 is : 0.043276
    ####loss on step 30000 is : 0.069399
    deep nn has been trained.
       
    user  system elapsed 
     267.59    0.08  269.37 
    plot(balt="l"
    حفظ الشبكة العصبية تحت اسم مختلف وتدريب واحد آخر
    كود PHP:
    SAE1<-SAE
    system.time(bal<-Testing.1(dt.bdtc(505050), LR 0.7dec 2Ep=300bar=500))
    begin to train sae ......
    training layer 1 autoencoder ...
    ####loss on step 10000 is : 0.000020
    ####loss on step 20000 is : 0.000016
    training layer 2 autoencoder ...
    ####loss on step 10000 is : 0.000050
    ####loss on step 20000 is : 0.000050
    training layer 3 autoencoder ...
    ####loss on step 10000 is : 0.000051
    ####loss on step 20000 is : 0.000043
    sae has been trained.
    begin to train deep nn ......
    ####loss on step 10000 is : 0.083888
    ####loss on step 20000 is : 0.083941
    deep nn has been trained.
       
    user  system elapsed 
     155.32    0.02  156.25 
    lines(balcol=2
    ألقِ نظرة على جداول الميزانيات (تُبرز النتيجة الأخيرة باللون الأحمر).
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 32. Balance on the last 500 bars by the signals of neural networks trained in 500 and 300 e.PNG
المشاهدات:	44
الحجـــم:	32.5 كيلوبايت
الرقم:	493194
    وكما نرى ، فإن الشبكة العصبية التي تم تدريبها في 300 حقب ، أظهرت نتيجة أفضل من الشبكة التي تم تدريبها في 500 فترة.


    وقت التدريب الأخير مناسب لإعادة التدريب السريع خلال جلسة التداول في هذا الإطار الزمني.


    لمزيد من العمل على مخطط حقيقي ، نحتاج إلى شيئين: نموذج مدرّب "SAE" ومعلمات تطبيع "prepr" لبيانات الإدخال. حفظها في الدليل ذات الصلة ، في حالتي هذا هو "D: / Alpari المحدودة MT4 / MQL4 / الملفات / EURUSD / M30 / Test_2014-10-14". يتم تعريف هذا ويعمل كعمل عامل ، إذا فتحت في Rstudio منطقة العمل "i_SAE_EURUSD_30.Rdata" المحفوظة بواسطة المؤشر.

    كود PHP:
    save(SAEpreprfile="SAE.model"
    في ملف "SAE.model" ، قمنا بحفظ النموذج نفسه ومعلمات التطبيع. استخدام النموذج بدونها لا معنى له. يمكنك تجربة وحفظ النماذج التي تعجبك كل يوم. سيتم حفظها في المجلدات "/ File / Symbol / TF / Test_Data". لكي تستخدم EA النموذج ، ضع الملف "SAE.model" في المجلد "File / Symbol / TF /" يدويًا. يمكن أن يحتوي هذا المجلد على نموذج واحد فقط وسيستخدمه EA للعمل.


    بعد تحميل الملف "SAE.model" ، يقوم EA بتحميل هذه الكائنات إلى منطقة العمل لاستخدامها في العمل. عند هذه النقطة يتم الانتهاء من الجزء اليدوي من العمل ، يمكنك وضع مؤشر EA على الرسم البياني واختباره في الوقت الحقيقي.


    لتقييم فعالية عمل EA ، هناك حاجة لمعايير كمية. لا يعتبر معامل الدقة مناسبًا تمامًا لهذا الغرض.


    متوسط النسبة المتوقعة للرصيد المتلقاة بواسطة ZigZag ونسبة التوازن في الشريط الأخير إلى عدد الأشرطة. في حالتنا هذه هو التوازن بواسطة ZigZag:

    كود PHP:
    sig.zz<-ifelse(tail(dt[  , ncol(dt)], 500) == 01, -1)
    bal.zz<-cumsum(tail(price[  , 'CO'], 500) * sig.zz)
    Kzz<-mean(bal.zz bal)
    Kzz
    [10.9173312 
    هذه درجة عالية جدًا ولكنها نسبية.


    إذا رأينا ما يبدو عليه مع مرور الوقت ، يمكننا أن نرى أنه بالنسبة للأشهر 50-100 الأولى ، هذا مؤشر غير مستقر ، على الرغم من أنه في وقت لاحق يصبح ثابتًا تقريبًا. الإحصاءات أدناه:
    كود PHP:
    plot(bal/bal.zzt="l")
    summary(bal/bal.zz)
        
    Min.  1st Qu.   Median     Mean  3rd Qu.     Max
    -
    15.2500   0.7341   0.7844   0.9173   0.8833  55.0000 
    اضغط على الصورة لعرض أكبر

الاســـم:	Fig. 33. Ratio of the forecast balance to the balance obtained by ZigZag.PNG
المشاهدات:	33
الحجـــم:	17.1 كيلوبايت
الرقم:	493195

    والثاني أكثر دقة لأنه يوضح عدد نقاط الربح الموجودة لشريط واحد على امتداد شريط N طويلًا.


    على سبيل المثال ، للتوازن حسب توقعات الشبكة العصبية على امتداد 500 بار:
    كود PHP:
    Kb<-tail(bal,1)/length(bal)*10^Dig
    Kb
    [111.508 
    بواسطة إشارات ZigZag :
    كود PHP:
    Kbz<-tail(bal.zz,1)/length(bal)*10^Dig
    Kbz
    [113.784 
    عندما يتم تحديد الحد الأدنى من الفعالية في أحد المعلمات ، فإننا نعرف الوقت الذي يمكننا فيه إعادة تدريب الشبكة العصبية أو تحسين معاييرها.


    سيعرض EA المعلمات التالية على الرسم البياني: العملية التي تم تنفيذها OP ، الدقة - K ، هي Kb محددة في وقت سابق ، Kmax - نفس المعلمة كـ Kb ولكنها محددة على الميزان المرتفع وتعطي فكرة عن مدى اختلاف هذا المعامل على الشريط الأخير من الحد الأقصى.






    4.2. تركيب وإطلاق النظام


    في الأرشيف المرفق SAE.zip يمكنك العثور على:


    -1- مؤشر i_SAE.mq4 ، ضعه على المجلد ~ / MQL4 / Indicators /
    -2- و e_SAE.mq4 EA ، وضعت على المجلد ~ / MQL4 / الخبراء /
    -3- مكتبة mt4Rb7.dll ، وضعت على ~ / MQL4 / المكتبات / المجلد.


    -4- الملف رأس mt4Rb7.mqh ، وضعت على المجلد ~ / MQL4 / تضمين /. تم تطوير المكتبة وملف رأس الصفحة وتم توفيرها من قبل Bernd Kreuss. يتضمن الاسم فهرس التغيير الأخير (b7).
    عندما يكون هناك الكثير من الإصدارات التي تحمل نفس الأسماء ، فهناك بعض الإختلالات التي تستغرق الكثير من الوقت لتصحيحها.

    -5- البرامج النصية على R: i_SAE.r (نص المؤشر الرئيسي) ، i_SAE_fun.r (وظائف النص البرمجي للمؤشر) ، e_SAE.r (EA script) ، e_SAE_init.r (نص التهيئة EA) ، SAE_SetDir.r (نص التوثيق والتحقق من الدلائل الضرورية). ونظرًا لأن النصوص البرمجية لا تعتمد على الرمز ، ولا من خلال timefreame ، يمكن أن تكون موجودة في دليل منفصل. في حالتي هذه هي "C: Rdata / SAE /". يحتوي الدليل "C: Rdata /" على نصوص مختلفة غير متصلة بأي مشروع معين. إذا وضعت نصوصًا في مجلد مختلفًا عن برنامجي ، فقم بإجراء تصحيحات ملائمة في المؤشر و EA التي تكون صحيحة على طريقة البرامج النصية.
    -6- SAE.model هو ملف ذو نموذج "SAE" ومعلمات التطبيع "prepr". تم تدريب النموذج على EURUSD (M30) ، آخر موعد 14.10.14. تم وصف عملية التدريب أعلاه.

    أيضا لا ننسى الطريق إلى الدليل حيث تم تخزين لغة R على جهاز الكمبيوتر الخاص بك.


    يفضل الترتيب التالي لبدء العمل. ضع EA على الرسم البياني. إذا قررت وضع EA على رمز آخر ، فسيتم تحديد منفذ مختلف عن الخوادم التي تم إطلاقها مسبقًا. على سبيل المثال ، المنفذ 8886 (بالمنفذ الافتراضي 8888).


    ملحوظة. هذه طريقة غير فعالة على الإطلاق. كل خادم لديه حجم 120-130 ميجا بايت. هذا ما هي الأشياء اليوم.


    بعد تهيئة EA العادية ، سيظهر التنبيه "لا توجد نتائج حسابية! الرمز". ثم قم بتثبيت المؤشر مع المعلمة الخارجية send = true ومنفذ الخادم المحدد الذي يتم توصيل المؤشر به (انظر أعلاه). إذا كان كل شيء يعمل بشكل صحيح ، ستظهر "عملية" البيانات الحقيقية ، الدقة ، K و Kmax في سلسلة الخرج وسيبدأ التداول.


    يمكن تسهيل التحكم الفعال في العملية بشكل أفضل من إدارة مهام Windows. إذا لم يظهر Rterm في القائمة بعد إطلاق EA أو المؤشر ، فإن عملية R تعطلت. السبب الرئيسي لمثل هذه الاضطرابات هو خطأ في بناء الجملة في البرامج النصية ، وعدم تطابق طول المتلقي MQL المتلقي والناقل المستخرج من Rterm.


    يمكن تصحيح البرامج النصية في Rstudio عن طريق تشغيل البرامج النصية بخط من البداية إلى النهاية.


    لسوء الحظ لم أتمكن من إطلاق EA في المختبر ، لذلك يجب اختباره على حساب تجريبي.


    4.3. طرق وطرق تحسين الخصائص النوعية


    قم بتغيير مجموعة المؤشرات المستخدمة عند الإدخال.
    تغيير طريقة تطبيع بيانات الإدخال.
    تحسين المعلمات من "المشرف" والمؤشرات عند الإدخال.
    تغيير ترميز متغير المدخلات للمصفوفة مع عمودين. معايرة إشارة التنبؤ.
    قم بتحسين معلمات الشبكة (عدد الخلايا العصبية في الطبقات المخفية ، عدد الطبقات ، مستوى التعلم ، عدد الحقب).


    استنتاج
    قمنا بإنشاء نماذج شبكة عميقة وتدريبها واختبارها مع تهيئة أوزان الخلايا العصبية في الطبقات المخفية من SAE. تعمل الشبكات على إعادة التدريب بسرعة كبيرة وتسمح بإعادة تدريبها دون تعطيل عملية التداول.


    النتائج التي تظهرها الشبكات العصبية هي متوسطة من حيث المقاييس. النتيجة المثالية لم تكن الهدف الأولي.


    باستخدام هذا النموذج والتقييم الدائم لمعامل الفعالية ، يمكن إعادة تدريب النموذج وتحسينه دون تعطيل عملية التداول.


    المرفق:



    1. SAE.zip - indicator, EA and accompanying files.






    الملفات المرفقة الملفات المرفقة
    • نوع الملف: zip sae.zip‏ (394.3 كيلوبايت, المشاهدات 91)
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  5. #5
    تاريخ التسجيل
    Mar 2007
    الإقامة
    سانت لوسيا
    المشاركات
    682

    افتراضي

    موضوع متعوب عليه .... يحتاج الى صفاء ذهن وتركيز عالي للفهم

    جزاك الله كال خير اخي لمسنطح ... ومزيد من المواضيع القيمة

    بالتوفيق

  6. #6
    تاريخ التسجيل
    Nov 2013
    الإقامة
    السعودية
    المشاركات
    49

    افتراضي

    عزيزي جاني شد عضلي وانا اقرا اهنيك وياليت تبسط الأمور اكثر
    توقيع العضو
    اكسبيرت ينقذك وقت الغفوه +قناعه من طمع السوق+اداره ذكيه لراس المال =والله ماتاخذ ريال
    حرامي%حرامي

  7. #7
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    موضوع متعوب عليه .... يحتاج الى صفاء ذهن وتركيز عالي للفهم

    جزاك الله كال خير اخي لمسنطح ... ومزيد من المواضيع القيمة

    بالتوفيق
    هذه المقال الاولى والثانية هي الشبكة عصبة عمقة مع RBM مكدسة. التدرب الذاتي ، ضبط النفس وتتبع بثماني مقالات رائعة عن الشبكات العميقة انشاء الله اجد الوقت لترجمتها
    عزيزي جاني شد عضلي وانا اقرا اهنيك وياليت تبسط الأمور اكثر
    كلما تعمقنا في الموضوع يوضح لوحده
    على فكرة طرحت الموضوع على الكاتب الاصلي للمقالات فقال انه لا مانع لديه تبقى مشكلة اللغة في المناقشة وطرح الاسئلة وانا افكر كيف احل هات المعظلة
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  8. #8
    تاريخ التسجيل
    Sep 2011
    المشاركات
    180

    افتراضي

    هل سنحصل على مؤشر؟

  9. #9
    تاريخ التسجيل
    Sep 2016
    الإقامة
    الجزائر
    المشاركات
    229

    افتراضي

    هل سنحصل على مؤشر؟
    المؤشر المرفق مع هاته المقال في الملف المضغوط ولكن هاته المقال تمهيدية للمقال " الشبكة عصبة عمقة مع RBM مكدسة. التدرب الذاتي ، ضبط النفس"
    مشكلة الخبير والمؤشر ان تدريب وانشاء الشبكة يدوي بينما في المقال الاخر فهو الي 100%
    سؤالك هاذا دلالة على انك لم تتمعن في المقال
    توقيع العضو
    سبحانك اللهم و بحمدك سبحان الله العظيم

  10. #10
    تاريخ التسجيل
    May 2019
    الإقامة
    مصر
    المشاركات
    7

    افتراضي

    المجهود المبذول فى هذا الموضوع واضح ولكن للأسف هناك أخطاء جوهرية فى الترجمه خصوصا فيما يتعلق بتوصيف الشبكه, فعلى سبيل المثال إذا قلنا عن خلية خفية انها خلية إدخال فسدت الشبكه بالكامل