K etma-ketlik modeli ikkita takrorlanuvchi neyron tarmoqlardan iborat. Bu erda kirishni qayta ishlaydigan kodlovchi va chiqishni qayta ishlaydigan dekoder mavjud. Kodlovchi va dekoder bir vaqtning o'zida ishlaydi - bir xil parametr yoki boshqa parametrlar yordamida. Ushbu model, haqiqiy RNN dan farqli o'laroq, kirish ma'lumotlarining uzunligi chiqish ma'lumotlarining uzunligiga teng bo'lgan hollarda ayniqsa qo'llaniladi. Ular RNNning o'xshash afzalliklari va cheklovlariga ega bo'lsa-da, bu modellar odatda chatbotlarda , mashina tarjimalarida va savollarga javob berish tizimlarida qo'llaniladi.(10-rasm)
10-rasm. Modellarning ketma-ketligi
Modulli neyron tarmog'ining qo'llanilishi
Qimmatli qog'ozlar bozorini bashorat qilish tizimlari
Belgilarni tanib olish uchun moslashtirilgan MNN
Yuqori darajadagi kirish ma'lumotlarini siqish
M odulli neyron tarmog'i mustaqil ishlaydigan va kichik vazifalarni bajaradigan bir qancha turli tarmoqlarga ega. Hisoblash jarayonida turli tarmoqlar haqiqatan ham bir-biri bilan o'zaro ta'sir qilmaydi yoki signal bermaydi. Ular natijaga erishish uchun mustaqil ravishda ishlaydi.(11-rasm)
11-rasm. Modulli neyron tarmoq
Natijada, katta va murakkab hisoblash jarayoni uni mustaqil komponentlarga bo'lish orqali sezilarli darajada tezroq amalga oshiriladi. Hisoblash tezligi oshadi, chunki tarmoqlar o'zaro aloqada emas yoki hatto bir-biriga ulanmaydi.
Modulli neyron tarmog'ining afzalliklari
Samarali
Mustaqil trening
Mustahkamlik
Maqsadlarni ko'chirish muammolari
2 qatlamli neyron tarmoq:
import numpy as np
# sigmoid function
def nonlin(x,deriv=False):
if(deriv==True):
return x*(1-x)
return 1/(1+np.exp(-x))
# input dataset
X = np.array([ [0,0,1],
[0,1,1],
[1,0,1],
[1,1,1] ])
# output dataset
y = np.array([[0,0,1,1]]).T
# seed random numbers to make calculation
# deterministic (just a good practice)
np.random.seed(1)
# initialize weights randomly with mean 0
syn0 = 2*np.random.random((3,1)) - 1
for iter in xrange(10000):
# forward propagation
l0 = X
l1 = nonlin(np.dot(l0,syn0))
# how much did we miss?
l1_error = y - l1
# multiply how much we missed by the
# slope of the sigmoid at the values in l1
l1_delta = l1_error * nonlin(l1,True)
# update weights
syn0 += np.dot(l0.T,l1_delta)
print "Output After Training:"
print l1
Treningdan keyingi natijalar:
[[ 0.00966449]
[0,00786506]
[0.99358898]
[0.99211957]]
Dostları ilə paylaş: |