Мэдрэлийн сүлжээ (Neural Networks) нь хиймэл оюуны (AI) нэгэн төрлийн загвар бөгөөд өгөгдлийг шинжилж, сургалтаар дамжуулан олон төрлийн даалгаврыг гүйцэтгэх чадвартай. Мэдрэлийн сүлжээний хэд хэдэн төрөл байдаг бөгөөд тэдгээрийн дотор FNN, RNN, CNN зэрэг нь илүү өргөн хэрэглэгддэг. Эдгээр төрлийг дэлгэрэнгүй авч үзье.
1. Feedforward Neural Networks (FNN)
Тодорхойлолт:
Feedforward Neural Networks (FNN) нь мэдрэлийн сүлжээний хамгийн энгийн хэлбэр бөгөөд мэдээллийг нэг чиглэлд дамжуулдаг. Энэхүү сүлжээ нь оролтын давхарга (input layer), нэг буюу хэд хэдэн нууц давхарга (hidden layers), болон гаралтын давхарга (output layer) агуулна.
Шинж чанар:
- Дамжуулах үйл явц: Мэдээлэл нь оролтын давхаргаас гаралтын давхарга хүртэл нэг чиглэлд дамжина.
- Илүү ойлгомжтой бүтэц: Энэхүү сүлжээ нь зөвхөн нэг чиглэлд мэдээлэл дамжуулдаг тул илүү ойлгомжтой, хэрэгжүүлэхэд хялбар.
Хэрэглээ:
- Ангилал: Мэдээллийг ангилах, жишээ нь: зураг ангилах.
- Тооцоолол: Математик тооцоолол хийх, функц таамаглах.
Keras дээр хэрэгжүүлэх жишээ:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
# Жишээ өгөгдөл үүсгэх
X_train = np.random.rand(1000, 20)
y_train = np.random.randint(2, size=(1000, 1))
# FNN загвар үүсгэх
model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Загварыг компайл хийх
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Загварыг сургах
model.fit(X_train, y_train, epochs=10, batch_size=32)
2. Recurrent Neural Networks (RNN)
Тодорхойлолт:
Recurrent Neural Networks (RNN) нь цаг хугацааны цуврал өгөгдөл болон дараалалтай өгөгдөлд тохиромжтой мэдрэлийн сүлжээ юм. Энэ сүлжээ нь өмнөх үеийн мэдээллийг дараагийн тооцоололд ашиглах давталттай холбоосууд (recurrent connections) агуулдаг.
Шинж чанар:
- Давталттай холбоос: Нууц давхарга дахь зангилаа нь өөрийгөө дахин холбоотой бөгөөд өмнөх үеийн мэдээллийг хадгалдаг.
- Цаг хугацааны цуврал өгөгдөл: Өгөгдлийн дараалал болон цаг хугацааны цуврал мэдээллийг боловсруулна.
Хэрэглээ:
- Яриа таних: Яриаг таних, текст болгон хувиргах.
- Текст үүсгэх: Шүлэг, өгүүллэг үүсгэх, машин орчуулга хийх.
- Цаг агаарын прогноз: Цаг агаарын өөрчлөлтийг таамаглах.
Keras дээр хэрэгжүүлэх жишээ:
import numpy as np
from keras.models import Sequential
from keras.layers import SimpleRNN, Dense
# Жишээ өгөгдөл үүсгэх
X_train = np.random.rand(1000, 10, 8) # 1000 жишээ, 10 цаг хугацааны алхам, 8 шинж чанар
y_train = np.random.randint(2, size=(1000, 1))
# RNN загвар үүсгэх
model = Sequential()
model.add(SimpleRNN(50, input_shape=(10, 8), activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Загварыг компайл хийх
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Загварыг сургах
model.fit(X_train, y_train, epochs=10, batch_size=32)
3. Convolutional Neural Networks (CNN)
Тодорхойлолт:
Convolutional Neural Networks (CNN) нь дүрс болон видео мэдээлэл боловсруулахад тохиромжтой мэдрэлийн сүлжээ юм. Энэ сүлжээ нь дүрсний шинж чанарыг автоматаар илрүүлэх, боловсруулах чадвартай.
Шинж чанар:
- Convolutional Layer: Дүрсийн шинж чанарыг илрүүлэх, давхаргууд нь дүрсийн жижиг хэсгүүдийг шинжлэх.
- Pooling Layer: Хэмжээг багасгаж, илүү хялбар байдлаар дүрсийн шинж чанарыг хадгална.
- Эхний давхаргууд: Дүрсний энгийн шинж чанарыг илрүүлдэг бол гүн давхаргууд нь нарийн төвөгтэй шинж чанарыг илрүүлнэ.
Хэрэглээ:
- Дүрс таних: Дүрсийн объектуудыг илрүүлэх, ангилах.
- Видео боловсруулах: Видео мэдээлэл шинжлэх, үйлдэл таних.
Keras дээр хэрэгжүүлэх жишээ:
import numpy as np
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
# Жишээ өгөгдөл үүсгэх
X_train = np.random.rand(1000, 28, 28, 1) # 1000 жишээ, 28x28 дүрс, 1 суваг
y_train = np.random.randint(10, size=(1000, 1))
# CNN загвар үүсгэх
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
# Загварыг компайл хийх
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Загварыг сургах
model.fit(X_train, y_train, epochs=10, batch_size=32)
Дүгнэлт
Мэдрэлийн сүлжээний олон төрлийн загварууд нь өөр өөр төрлийн даалгаврыг гүйцэтгэх чадвартай. FNN нь энгийн, ойлгомжтой, RNN нь дараалалтай өгөгдлийг боловсруулахад, CNN нь дүрс болон видео мэдээллийг боловсруулахад тус тус тохиромжтой. Эдгээр загварууд нь AI болон машин сургалтын салбарт өргөн хэрэглэгддэг бөгөөд ирээдүйд илүү их хөгжиж, олон салбарт ашиглагдах боломжтой. Deep Learning-н гол ойлголтуудыг суралцаж, бодит өгөгдөл дээр эдгээр загваруудыг ашиглаж сурахыг хүсвэл “Deep Learning TensorFlow & Keras” сургалтыг үзэхийг санал болгож байна.
Эх сурвалж:
- Bishop, C. M. (2006). Pattern Recognition and Machine Learning. Springer.
- Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning. MIT Press.
- LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. Nature, 521(7553), 436-444.
- Shiri, F. M., Perumal, T., Mustapha, N., & Mohamed, R. (n.d.). A Comprehensive Overview and Comparative Analysis on Deep Learning Models: CNN, RNN, LSTM, GRU.