Пред.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
4.13. Примеры моделирования эволюционных алгоритмов в приложении к нейронным сетямПредставленные в п. 4.11.1 примеры 4.23 - 4.27, а также пример 4.20 из разд. 4.9 можно рассматривать как иллюстрацию возможности применения генетического (в частности, эволюционного) алгоритма для подбора весов нейронной сети. Этот алгоритм будет применяться в перечисленных примерах вместо традиционного метода обучения, например, вместо алгоритма обратного распространения ошибки (backpropagation). Очень часто применяется так называемый гибридный подход, состоящий в объединении обоих методов. Как правило, вначале при помощи генетического алгоритма находится решение, достаточно близкое к оптимальному, и затем оно рассматривается как отправная точка для традиционного поиска оптимальной точки, например, по методу обратного распространения ошибки.
4.13.1. Программы Evolver и BrainMakerМетод обратного распространения ошибки применяется для обучения нейронных сетей в программе BrainMaker [50]. В примере 4.30 с использованием этой программы тестируется нейронная сеть, реализующая логическую систему XOR со значениями весов, рассчитанными в п. 4.11.1 с помощью программы Evolver. При решении примеров 4.31 и 4.32 демонстрируется гибридный подход, т.е. обучение этой же нейронной сети программой BrainMaker, но при начальных значениях весов, рассчитанных генетическим алгоритмом программы Evolver. В свою очередь, пример 4.33 иллюстрирует обучение нейронной сети, реализующей логическую систему XOR, при использовании только программы BrainMaker. Пример 4.30 Протестировать с помощью программы BrainMaker нейронную сеть, реализующую логическую систему XOR (рис. 4.2) с весами, рассчитанными в примере 4.27 генетическим алгоритмом программы Evolver и представленными на рис. 4.101. На рис. 4.123 показаны значения
весов, введенные в программу BrainMaker. Они сгруппированы в два блока,
разделенные пустой строкой. Первый блок содержит веса связей между входным и
скрытым слоем так, что для каждого из двух нейронов скрытого слоя приведены
веса связей со всеми входами, а последние элементы строк - это
Рис. 4.123. Показанные на рис. 4.101 веса нейронной сети, реализующей систему XOR (рис. 42) и подготовленной к тестированию программой BrainMaker. Результаты тестирования сети
приведены на рис. 4.124 - 4.127. Можно сделать вывод о хорошей обученности
сети. Значения на выходах для четырех пар входных значений практически
совпадают с показанными на рис. 4.101. Абсолютная разность между заданным
значением
Рис. 4.124. Результат
тестирования программой BrainMaker нейронной сети из рис. 4.2 с начальными
значениями весов, представленными на рис. 4.123, для
Рис. 4.125. Результат
тестирования программой BrainMaker нейронной сети из рис 4.2 с начальными
значениями весов, представленными на рис. 4.123, для
Рис. 4.126. Результат
тестирования программой BrainMaker нейронной сети из рис. 4.2 с начальными
значениями весов, представленными на рис. 4.123, для
Рис. 4.127. Результат
тестирования программой BrainMaker нейронной сети из рис. 4.2 с начальными
значениями весов, представленными на рис. 4.123, для Пример 4.31 Обучить с помощью программы BrainMaker нейронную сеть, реализующую логическую систему XOR (рис. 4.2) с весами, рассчитанными в примере 4.27 генетическим алгоритмом программы Evolver и представленными на рис. 4.100. Вначале с помощью программы BrainMaker была протестирована нейронная сеть, показанная на рис. 4.2. В качестве начальных значений для алгоритма обучения программы BrainMaker использовались веса, рассчитанные генетическим алгоритмом программы Evolver. Следовательно, это типичный пример гибридного подхода, поскольку генетический алгоритм используется для нахождения начальных значений весов для градиентного алгоритма обратного распространения ошибки (backpropagation). Эти начальные значения в формате программы BrainMaker представлены на рис. 4.128, а соответствующие результаты тестирования сети - на рис. 4.129 - 4.132.
Рис. 4.128. Показанные на рис. 4.100 веса нейронной сети, реализующей систему XOR и подготовленной к обучению программой BrainMaker.
Рис. 4.129. Результат
тестирования нейронной сети из рис. 4.2 с начальными значениями весов,
представленными на рис. 4.128, для
Рис. 4.130. Результат
тестирования той же сети для
Рис. 4.131. Результат
тестирования той же сети для
Рис. 4.132. Результат
тестирования той же сети для Анализ результатов тестирования
свидетельствует о том, что они оказываются хуже, чем показанные на рис. 4.124 -
4.127, поскольку в предыдущем примере не было ни одной ошибки, а в текущем
примере в пяти случаях из 22 сеть дала неверный ответ. Кроме того, видно, что
толерантность выходного значения на рис. 4.130 превышает уровень 0,1.
Впоследствии сеть подверглась обучению с помощью программы BrainMaker с
толерантностью, равной 0,1. Результаты обучения иллюстрирует рис. 4.133. На
нижнем графике заметно уменьшение среднеквадратичной погрешности RMS (Root Mean
Squared) при выполнении 10 реализаций (runs) алгоритма. Погрешность RMS
отличается от погрешности
где
Рис. 4.133. Результат обучения программой BrainMaker нейронной сети из рис. 4.2 с начальными значениями весов, представленными на рис. 4.128. С учетом различий, связанных с
взятием квадратного корня при расчете RMS, можно сравнить эту погрешность со
значением
Рис. 4.134. Результат
тестирования программой BrainMaker нейронной сети из рис. 4.2 с начальными
значениями весов, представленными на рис. 4.128, с толерантностью 0,1 для
Рис. 4.135. Результат
тестирования той же сети для
Рис. 4.136. Результат
тестирования той же сети для
Рис. 4.137. Веса нейронной сети, обученной программой BrainMaker с толерантностью 0,1. Сеть обучена с толерантностью
0,1. Это означает, что выходные значения должны не более чем на 10% отличаться
от значений 0 и 1 для того, чтобы модель системы XOR была признана корректной.
Следовательно, при подаче эталона 0 считаются правильными значения Конечно, показанные на рис. 4.137 значения весов не могут рассматриваться в качестве оптимальных для системы XOR. Поэтому толерантность была уменьшена до 0,025, и процесс обучения продолжился. Полученные результаты приведены на рис. 4.138.
Рис. 4.138. Итоговая фаза последующего обучения программой BrainMaker сети с весами, показанными на рис. 4.137, при уровне толерантности 0,025. Интересно сравнить достигнутое значение погрешности RMS с аналогичным показателем на рис. 4.133. Результаты тестирования обученной сети представлены на рис. 4.139 - 4.142. Значение абсолютной разности между эталоном и фактическим выходным значением на следующих друг за другом рисунках составляет 0,0252, 0,0246, 0,0239, 0,0247 соответственно, что отражает гистограмма на рис. 4.138.
Рис. 4.139. Результат
тестирования нейронной сети, обученной программой BrainMaker с толерантностью
0,025 (рис. 4.138), для
Рис. 4.140. Результат
тестирования той же сети для
Рис. 4.141. Результат
тестирования той же сети для
Рис. 4.142. Результат
тестирования той же сети для Значения весов для сети, обученной с толерантностью 0,025, приведены на рис. 4.143. Интересно сравнить его с рис. 4.137. Более поздние результаты оказываются гораздо ближе к оптимальным. Далее была предпринята попытка еще лучше обучить сеть с уменьшением толерантности до 0,02. К сожалению, эта попытка завершилась неудачей, поскольку способности сети к обучению оказались исчерпанными. Однако при фиксации толерантности на уровне 0,023 был достигнут конечный эффект, показанный на рис. 4.144. Результаты тестирования сети, обученной подобным образом, представлены на рис. 4.145 - 4.148, а значения весов этой сети - на рис. 4.149. Еще лучший результат обучения, который иллюстрируется рис. 4.150, удалось получить при толерантности 0,022. Результаты тестирования сети, обученной подобным образом, представлены на рис. 4.151 - 4.154, а значения весов этой сети - на рис. 4.155.
Рис. 4.143. Веса нейронной сети, обученной программой BrainMaker с толерантностью 0,025 (рис. 4.138).
Рис. 4.144. Итоговая фаза последующего обучения программой BrainMaker сети с весами, показанными на рис. 4.143, при уровне толерантности 0,023.
Рис. 4.145. Результат
тестирования нейронной сети, обученной программой BrainMaker с толерантностью
0,023 (рис. 4.144), для
Рис. 4.146. Результат
тестирования той же сети для
Рис. 4.147. Результат
тестирования той же сети для
Рис. 4.148. Результат
тестирования той же сети для
Рис. 4.149. Веса нейронной сети, обученной программой BrainMaker с толерантностью 0,023 (рис. 4.144).
Рис. 4.150. Итоговая фаза последующего обучения программой BrainMaker сети с весами, показанными на рис. 4.149, при уровне толерантности 0,022.
Рис. 4.151. Результат
тестирования нейронной сети, обученной программой BrainMaker с толерантностью
0.022 (рис. 4.150), для
Рис. 4.152. Результат
тестирования той же сети для
Рис. 4.153. Результат
тестирования той же сети для
Рис. 4.154. Результат
тестирования той же сети для
Рис. 4.155. Веса нейронной сети, обученной программой BrainMaker с толерантностью 0.022 (рис. 4.150). Дальнейшее снижение уровня толерантности до 0,021, к сожалению, уже не ведет к большей обученности сети, даже если бы программа работала еще в течение многих часов. Таким образом, наилучшим решением считается сеть со значениями весов, показанными на рис. 4.155, которые следует сравнить с набором весов для примера 4.27, приведенными на рис. 4.101. Нетрудно заметить, что объединение генетического алгоритма программы Evolver с программой BrainMaker дало лучшие результаты, чем на рис. 4.101. Если бы вычисления сразу проводились с толерантностью 0,022, а в качестве начальных весов принимались значения с рис. 4.128, то результат был бы лучше, чем на рис. 4.101. Аналогичный результат можно было ожидать и в примере 4.30 при установлении уровня толерантности, равным 0,022. Пример 4.32 Обучить с помощью программы BrainMaker нейронную сеть, реализующую логическую систему XOR (рис. 4.2) с начальными значениями весов, рассчитанными в примере 4.27 генетическим алгоритмом программы Evolver и представленными на рис. 4.99. Это еще один пример гибридного подхода к обучению весов нейронной сети, реализующей логическую систему XOR. Он очень похож на предыдущий пример, однако отличается набором начальных значений весов, полученных за меньшее время выполнения генетического алгоритма и, следовательно, более далеких от оптимальных. Толерантность погрешности принята
равной 0,025, что означает 2,5% допустимой погрешности, т.е. разницы между
фактическим выходным значением и заданным значением - эталоном. Поэтому для
эталона, равного 0, корректным будет признаваться выходное значение от 0 до
0,025, а для эталона, равного 0 - значение от 0,975 до 1. Начальный набор весов
для программы BrainMaker представлен на рис. 4.156, а на рис. 4.157 - 4.160
показаны результаты тестирования сети. Видно, что выходные значения
Рис. 4.156. Исходное множество весов для программы BrainMaker. полученное с помощью генетического алгоритма программы Evolver.
Рис. 4.157. Результат
тестирования нейронной сети с весами, показанными на рис. 4.156, для
Рис. 4.158. Результат
тестирования той же сети для
Рис. 4.159. Результат
тестирования той же сети для
Рис. 4.160. Результат
тестирования той же сети для
Рис. 4.161. Результат обучения программой BrainMaker нейронной сети с весами, представленными на рис. 4.128, при уровне толерантности 0,025
Рис. 4.162. Результат
тестирования нейронной сети, обученной программой BrainMaker с толерантностью
0,025 (рис. 4.161), для
Рис. 4.163. Результат
тестирования той же сети для
Рис. 4.164. Результат
тестирования той же сети для
Рис. 4.165. Веса нейронной сети (при начальных значениях, показанных на рис 4.156), обученной программой BrainMaker с толерантностью 0,025 . Рассмотрим теперь эффект обучения нейронной сети, реализующей логическую систему XOR, с помощью только программы BrainMaker без применения генетического алгоритма. Пример 4.33 Обучить с помощью программы BrainMaker нейронную сеть, реализующую логическую систему XOR (рис. 4.2) с начальными значениями весов, представленными на рис. 4.96. Показанные на рис. 4.96 значения
весов сгенерированы случайным образом. На рис. 4.166 эти веса представлены в
формате программы BrainMaker. Нейронная сеть с этими весами не может считаться
обученной. Результаты ее тестирования приведены на рис. 4.167 - 4.170. Заметно,
что выходные значения
Рис. 4.166. Сгенерированный случайным образом исходный набор весов для нейронной сети, реализующей систему XOR.
Рис. 4.167. Результат
тестирования нейронной сети с весами, показанными на рис. 4.166, для
Рис. 4.168. Результат
тестирования той же сети для
Рис. 4.169. Результат
тестирования той же сети для
Рис 4.170. Результат тестирования
той же сети для Вначале обучение сети проводилось
с толерантностью погрешности, равной 0,1. Процесс обучения иллюстрируют графики
на рис. 4.171. На рис. 4.172 показаны значения весов, полученные после 191
прогона (runs) алгоритма. Продолжение графика с рис. 4.171 демонстрируется на
рис. 4.173, а его завершение - на рис. 4.174. Полученные значения весов
нейронной сети с толерантностью погрешности, равной 0,1, представлены на рис.
4.175. Заметим, что значение погрешности RMS для этого случая (см. рис. 4.174)
достаточно близко к значению погрешности
Рис. 4.171. Начальная фаза обучения программой BrainMaker сети с весами, показанными на рис. 4.166, при уровне толерантности 0,1.
Рис. 4.172. Веса, полученные после 191 прогона алгоритма обучения программы BrainMaker.
Рис. 4.173. Продолжение обучения, показанного на рис. 4.171.
Рис. 4.174. Завершающая фаза обучения, показанного на рис. 4.171.
Рис. 4.175. Веса нейронной сети, обученной программой BrainMaker с толерантностью 0,1. Нейронная сеть с весами,
показанными на рис. 4.166, была обучена с толерантностью погрешности 0,1 за 399
прогонов алгоритма программы BrainMaker. Результаты тестирования сформированной
сети представлены на рис. 4.176-4.178. Для входов
Рис. 4.176. Результат
тестирования нейронной сети, обученной программой BrainMaker с толерантностью
0,025, для
Рис. 4.177. Результат
тестирования той же сети для
Рис. 4.178. Результат
тестирования той же сети для
Рис. 4.179. Графики, полученные при последующем обучении программой BrainMaker сети с весами, показанными на рис. 4.175, при уровне толерантности 0,025.
Рис. 4.180. Веса, полученные в результате последующего обучения сети при уровне толерантности 0,025 (после 510 прогонов - рис. 4.179).
Рис. 4.181. Процесс обучения сети с толерантностью 0,025 после 4000 прогонов.
Рис. 4.182. Веса, полученные после 4000 прогонов обучения сети с толерантностью 0,025.
Рис. 4.183. Процесс обучения сети на рис. 4.181 при изменении толерантности до 0,03.
Рис. 4.184. Веса, полученные по завершении обучения сети с толерантностью 0,03 (рис. 4.183). В результате обучения нейронной
сети, реализующей логическую систему XOR с начальными значениями весов,
представленными на рис. 4.166 и 4.96, была найдена еще одна комбинация весов,
подобная полученным при минимизации погрешности Для Рассмотренные примеры иллюстрируют гибридный подход, основанный на объединении двух различных методов - генетического алгоритма и градиентного метода обучения весов нейронной сети, известного под названием обратного распространения ошибки. В примере 4.27 для обучения нейронной сети применялся генетический алгоритм программы Evolver. После 40 000 «тактов» функционирования этого алгоритма (что соответствует 800 поколениям классического генетического алгоритма) получено близкое к оптимальному решение. Однако, как показывают примеры 4.30 и 4.31, этот результат можно еще улучшить за счет «дообучения» с помощью градиентного алгоритма. Примеры 4.31 и 4.32 представляют типичный способ такого гибридного подхода, когда генетический алгоритм применяется только для выбора начальной точки (в данном случае - исходного множества весов) для градиентного метода. В примере 4.31 генетический алгоритм функционировал дольше, чем в примере 4.32, поэтому начальная точка для метода обратного распространения ошибки в примере 4.32 находится на большем расстоянии от точки оптимального решения, чем в примере 4.31. Следует обратить внимание на факт, что длительность «дообучения» не имеет большого значения. Градиентный алгоритм выполняется быстрее генетического, так как в последнем предполагается просмотр всей популяции возможных решений. В примере 4.33 продемонстрирован способ обучения нейронной сети методом обратного распространения ошибки (программа BrainMaker). Полученный результат оказался еще более близким к оптимальному, чем при использовании только генетического алгоритма (пример 4.30). Однако необходимо подчеркнуть, что градиентный метод не всегда приводит к достижению ожидаемого результата, который зависит от начальной точки. При другом, сгенерированном случайным образом исходном множестве весов сеть может оказаться «необучаемой», что встречается довольно часто. Кроме того, принципиальным недостатком градиентных методов оказывается их «застревание» в локальных оптимумах. Это можно предотвратить применением генетического алгоритма - только для того, чтобы найти какую-либо точку, настолько близкую к глобальному оптимуму, что градиентный алгоритм при старте из этой точки не «застрянет» ни в каком локальном оптимуме и быстро найдет глобальное решение. В рассмотренных примерах использовался генетический (эволюционный) алгоритм программы Evolver. Конечно, для достижения тех же целей можно было применять и программу FlexTool (п. 4.9), которая допускает такой же интервал изменения значений весов от -7 до 8, как и программа BrainMaker. Для выбора исходного множества весов нейронной сети также пригодны и другие реализации генетического (эволюционного) алгоритма.
|
1 |
Оглавление
|