Бидний ихэнх нь AI дүрс үүсгэгчийг мэддэг Тогтвортой тархалт. Энэ нь аль хэдийн салбарыг өөрчилж, бидний амьдралд шингэсэн.
Гэсэн хэдий ч Stable Diffusion загварууд нь зураг үүсгэхээс хамаагүй илүү юм.
Тэднийг ажиллуулж болох маш олон салбар бий.
Тогтвортой тархалтын загварууд нь математик загварууд юм. Мөн тэд цаг хугацааны явцад өөрчлөгдөж буй системүүдийн динамикийг судлахад тусалж чадна.
Эдгээр нь тархалтын процессын үзэл баримтлалд суурилдаг. Тиймээс та өргөн хүрээний үзэгдлийг шалгаж болно. Жишээлбэл; дулаан дамжуулалт, химийн урвал, санхүүгийн зах зээл дэх мэдээллийн тархалт.
Эдгээр загварууд нь маш дасан зохицох чадвартай байдаг. Тиймээс та одоогийн нөхцөл байдалд үндэслэн системийн ирээдүйн төлөвийг урьдчилан таамаглах боломжтой.
Нэмж дурдахад, та үүнийг удирдаж буй физик эсвэл санхүүгийн үндсэн зарчмуудыг харж болно. Энэ үзэл баримтлал нь олон салбарт маш хэрэгтэй байсан. Эдгээрт физик, хими, санхүү орно.
Тиймээс бид үүнийг илүү нарийвчлан судлахыг хүсч байна. Мөн бид эдгээр Тогтвортой тархалтын загваруудыг хэрхэн сургах талаар заавар өгөхийг хүсч байна.
Тогтвортой тархалтын загварууд хэрхэн үүссэн бэ?
Энэ нь 19-р зууны сүүл үеэс эхтэй.
Тогтвортой тархалтын загварууд хаанаас эхэлж байсан нь аливаа зүйлийн тархалтын процессын математик судалгаа юм. Тогтвортой тархалтын хамгийн алдартай загваруудын нэг бол Фоккер-Планкийн тэгшитгэл юм.
Анх 1906 онд танилцуулагдсан. Эдгээр загварууд нь цаг хугацааны явцад хувьсан өөрчлөгдөж, өөрчлөгдсөн. Тиймээс бид одоо тэдгээрийг янз бүрийн салбарт ашиглаж байна.
Үүний цаана ямар логик байна вэ?
Энгийнээр хэлбэл, бидний хэлсэнчлэн эдгээр нь математик загвар юм. Нэмж дурдахад тэдгээр нь системд үл хөдлөх хөрөнгө эсвэл тоо хэмжээ хэрхэн тархаж байгааг судлахад тусалдаг.
Эдгээр нь тархалтын процессын зарчимд суурилдаг. Тиймээс тэдгээр нь системд хэмжигдэхүүн хэрхэн тархаж байгааг судлахад тусалдаг. Энэ тархалт нь концентраци, даралт болон бусад үзүүлэлтүүдийн өөрчлөлтийн үр дүн юм.
Энгийн жишээ хэлье. Танд будаг нэмсэн шингэн дүүрэн сав байна гэж төсөөлөөд үз дээ. Будаг нь шингэнд тархаж, эмульс болж эхлэх үед диффузийг эндээс харж болно. Шингэн ба будгийн шинж чанарт үндэслэн Тогтвортой тархалтын загварыг ашиглан будаг хэрхэн тархаж, цаг хугацааны явцад холилдохыг урьдчилан таамаглах боломжтой.
Санхүүгийн зах зээл эсвэл химийн урвал гэх мэт илүү төвөгтэй системүүдэд эдгээр загварууд нь мэдээлэл эсвэл шинж чанарууд хэрхэн тархаж, цаг хугацааны явцад системд нөлөөлөхийг урьдчилан таамаглах боломжтой. Үүнээс гадна том өгөгдөлд дасаж магадгүй эдгээр загваруудыг сургах үнэн зөв таамаглал гаргах. Эдгээр нь системийн урт хугацааны хувьслыг тодорхойлсон математикийн томьёо ашиглан бүтээгдсэн.
Систем дэх тодорхой шинж чанаруудын тархалтыг цаг хугацааны явцад ойлгох, урьдчилан таамаглах нь эдгээр загваруудын үндсэн санаа юм. Мэргэшсэн салбарын мэргэжилтнүүд эдгээр загварыг ихэвчлэн ашигладаг гэдгийг санах нь чухал.
Загвар өмсөгчдийг хэрхэн сургах вэ?
Өгөгдлөө цуглуулж, бэлтгэх:
Та загвараа сургаж эхлэхээсээ өмнө эхлээд мэдээллээ цуглуулж, бэлтгэх ёстой. Таны өгөгдлийг цэвэрлэж, форматлах шаардлагатай байж магадгүй. Мөн дутуу дугаарыг арилгах шаардлагатай байж магадгүй юм.
Загварын архитектурыг сонгох
Тогтвортой диффузын загварууд нь янз бүрийн хэлбэртэй байдаг. Энэ нь ихэвчлэн Фоккер-Планкийн тэгшитгэл, Шредингерийн тэгшитгэл, Мастер тэгшитгэл дээр суурилдаг. Таны нөхцөл байдалд хамгийн сайн тохирох загварыг сонгох хэрэгтэй. Тиймээс эдгээр загвар бүр нь давуу болон сул талуудтай байдаг.
Таны алдагдал функцийг бий болгох
Энэ нь таны загвар өгөгдөлтэй хэр зэрэг нийцэж чадахад нөлөөлдөг тул энэ нь чухал юм. Тогтвортой тархалтын загваруудын хувьд дундаж квадрат алдаа ба Куллбэк-Лейблерийн зөрүү нь байнга алдагдлын функцууд юм.
Загвараа сурга
Стохастик градиент уналт эсвэл ижил төстэй оновчлолын аргыг ашигласнаар та алдагдлын функцийг тодорхойлсны дараа загвараа сургаж эхлэх боломжтой.
Загварын ерөнхийлөлтийг шалгана уу
Сургалтын дараа та шинэ өгөгдлийг тестийн багц өгөгдөлтэй харьцуулж шалгах хэрэгтэй.
Загварынхаа гиперпараметрүүдийг тааруулна уу
Загварынхаа гүйцэтгэлийг сайжруулахын тулд суралцах хурд, багцын хэмжээ, сүлжээн дэх далд давхаргын тоо зэрэг гиперпараметрийн янз бүрийн утгыг туршиж үзээрэй.
Өмнөх үйлдлүүдийг давт
Хамгийн сайн үр дүнд хүрэхийн тулд та эдгээр үйл явцыг нэгээс олон удаа давтах шаардлагатай байж магадгүй юм. Энэ нь асуудлын хүндрэл, өгөгдлийн калибраас хамаарна.
Код бичих заавар
Програмчлалын хэл Python, MATLAB, C++, R зэрэг нь тогтвортой тархалтын загварыг бий болгоход ашиглагдаж болно. Хэрэглэсэн хэл нь тухайн програмаас хамаарна. Түүнчлэн, энэ нь тухайн хэлэнд ашиглах боломжтой хэрэгсэл, сангаас шалтгаалж болно.
Энэ тохиолдолд Python бол хамгийн сайн сонголт юм. Энэ нь тоон тооцоололд зориулсан NumPy, SciPy зэрэг хүчирхэг сангуудтай. Түүнчлэн, энэ нь TensorFlow болон ПиТорч мэдрэлийн сүлжээг бий болгох, сургахад зориулагдсан. Тиймээс энэ нь тогтвортой тархалтын загваруудыг бичихэд маш сайн сонголт болж байна.
Жишээ нь:
Систем дэх дулаан эсвэл бодисын концентраци зэрэг чанар, хэмжигдэхүүн цаг хугацааны явцад хэрхэн өөрчлөгддөгийг тодорхойлдог математикийн томъёо болох диффузийн тэгшитгэлийг ашиглацгаая. Энэ тэгшитгэл ерөнхийдөө дараах байдалтай байна.
∂u/∂t = α ∇²u
Тархалтын коэффициент () нь шинж чанар эсвэл хэмжигдэхүүн нь системээр хэр амархан тархаж байгааг хэмжих хэмжүүр юм.
u (2u)-ийн лаплациан нь орон зайд хамаарах шинж чанар эсвэл хэмжигдэхүүн хэрхэн өөрчлөгдөж байгааг дүрсэлсэн дүрслэл юм. u нь тархаж буй шинж чанар эсвэл хэмжигдэхүүн (жишээлбэл, температур эсвэл концентраци) бол t нь цаг хугацааны дамжуулалт, тархалтын коэффициент ба тархалтын тогтмол () юм.
Бид үүнийг Python дээр Эйлер аргыг ашиглан хэрэгжүүлж чадна.
import numpy as np
# Define the diffusion coefficient
alpha = 0.1
# Define the initial condition (e.g. initial temperature or concentration)
u = np.ones(100)
# Time step
dt = 0.01
# Time-stepping loop
for t in range(1000):
# Compute the spatial derivative
du = np.diff(u)
# Update the value of u
u[1:] = u[1:] + alpha * du * dt
Энэ код нь диффузийн тэгшитгэлийг хэрэгжүүлэхийн тулд Эйлерийн техникийг ашигладаг. Энэ нь эхлэлийн төлөвийг (100) хэлбэртэй нэг массиваар дүрслэгдсэн нэгэн төрлийн анхны нөхцөл гэж тодорхойлдог. 0.01-ийг хугацааны алхам болгон ашигладаг.
Цагийн алхамын давталтын 1000 давталт дууссан.
Энэ нь хөрш зэргэлдээх элементүүдийн ялгааг тодорхойлдог np.diff функцийг ашигладаг. Тиймээс энэ нь тархаж буй өмч буюу хэмжигдэхүүний орон зайн деривативыг тооцоолдог. Мөн үүнийг давталт бүрт du-ээр илэрхийлнэ.
Дараа нь бид орон зайн деривативыг тархалтын коэффициент альфа ба цаг хугацааны алхамаар үржүүлж u-ийн утгыг шинэчилнэ.
Илүү төвөгтэй жишээ
Зөвхөн тогтвортой дулааны тархалтыг хэмждэг тогтвортой тархалтын загвар ямар байх вэ? Энэ код хэрхэн ажилладаг вэ?
Цаг хугацааны явцад системд дулаан хэрхэн тархдагийг тайлбарладаг хэсэгчилсэн дифференциал тэгшитгэлийг (PDEs) шийдвэрлэх шаардлагатай. Тиймээс бид дулааны тогтвортой тархалтыг давтдаг Тогтвортой тархалтын загварыг сургаж чадна.
Нэг хэмжээст саваа дахь дулааны тогтвортой тархалтыг тайлбарладаг PDE гэсэн дулааны тэгшитгэлийг төгсгөлийн ялгааны аргыг ашиглан хэрхэн шийдэж болохыг энд харуулав.
import numpy as np
import matplotlib.pyplot as plt
# Define the initial conditions
L = 1 # length of the rod
Nx = 10 # number of spatial grid points
dx = L / (Nx - 1) # spatial grid spacing
dt = 0.01 # time step
T = 1 # total time
# Set up the spatial grid
x = np.linspace(0, L, Nx)
# Set up the initial temperature field
T0 = np.zeros(Nx)
T0[0] = 100 # left boundary condition
T0[-1] = 0 # right boundary condition
# Set up the time loop
Tn = T0
for n in range(int(T / dt)):
Tnp1 = np.zeros(Nx)
Tnp1[0] = 100 # left boundary condition
Tnp1[-1] = 0 # right boundary condition
for i in range(1, Nx - 1):
Tnp1[i] = Tn[i] + dt * (Tn[i+1] - 2*Tn[i] + Tn[i-1]) / dx**2
Tn = Tnp1
# Plot the final temperature field
plt.plot(x, Tn)
plt.xlabel('x')
plt.ylabel('T(x)')
plt.show()
Текстээс зураг үүсгэх нь хэрхэн ажилладаг вэ?
Энэ нь интернетэд нэлээд алдартай тул бид зураг үүсгэх хэрхэн ажилладагийг шалгаж болно.
Байгалийн хэл боловсруулах (NLP) аргууд ба мэдрэлийн сүлжээ. Мөн тэдгээрийг текстээс зураг руу хөрвүүлэх тогтвортой тархалтын загварыг бий болгоход ихэвчлэн ашигладаг. Үүнийг хэрхэн хэрэгжүүлэх талаар дэлгэрэнгүй тайлбарыг доор өгөв.
1- Текстийн өгөгдөл дэх үгсийг тэмдэглэж, зогсоох үг, цэг таслалыг арилгана. Үгсийг тоон утга болгон хувирга. Энэ нь урьдчилсан боловсруулалтын (үг оруулах) нэг хэсэг юм.
import nltk
from nltk.tokenize import word_tokenize
nltk.download('punkt')
# Pre-processing the text data
text = "a bird sitting on a flower. "
words = word_tokenize(text)
words = [word.lower() for word in words if word.isalpha()]
2- Кодер болон декодерыг хослуулсан мэдрэлийн сүлжээг ашиглан текст болон зургийг хэрхэн холбох талаар сурах. Декодер сүлжээ нь далд кодыг оролт болгон хүлээн авдаг. Дараа нь кодлогч сүлжээ нь текст өгөгдлийг авсаархан дүрслэл (далд код) болгон хувиргасны дараа холбогдох зургийг үүсгэдэг.
import tensorflow as tf
# Define the encoder model
encoder = tf.keras.Sequential()
encoder.add(tf.keras.layers.Embedding(input_dim=vocab_size,
output_dim=latent_dim))
encoder.add(tf.keras.layers.GRU(latent_dim))
encoder.add(tf.keras.layers.Dense(latent_dim))
# Define the decoder model
decoder = tf.keras.Sequential()
decoder.add(tf.keras.layers.Dense(latent_dim,
input_shape=(latent_dim,)))
decoder.add(tf.keras.layers.GRU(latent_dim))
decoder.add(tf.keras.layers.Dense(vocab_size))
# Combine the encoder and decoder into an end-to-end model
model = tf.keras.Sequential([encoder, decoder])
3- Зургийн цуглуулга болон тэдгээрт дагалдах текстийн тайлбарыг өгөх замаар. Дараа нь та кодлогч-декодерын сүлжээг сургаж болно.
# Compile the model
model.compile(optimizer='adam',
loss='categorical_crossentropy')
# Train the model on the dataset
model.fit(X_train, y_train, epochs=10, batch_size=32)
4- Сүлжээг сургасны дараа та үүнийг шинэ текстийн оролтоос зураг үүсгэхэд ашиглаж болно. Мөн энэ нь текстийг кодлогчийн сүлжээнд оруулах явдал юм. Дараа нь та далд код үүсгэж, дараа нь холбогдох дүрсийг гаргахын тулд далд кодыг декодчилогч сүлжээнд оруулж болно.
# Encode the text input
latent_code = encoder.predict(text)
# Generate an image from the latent code
image = decoder.predict(latent_code)
5-Тохирох өгөгдлийн багц болон алдагдлын функцийг сонгох нь хамгийн чухал алхамуудын нэг юм. Өгөгдлийн багц нь олон янз бөгөөд олон төрлийн зураг, текстийн тайлбарыг агуулдаг. Бид зургуудыг бодитой болгохыг хүсч байна. Мөн бид алдагдлын функцийг зохион бүтээхийн тулд текстийн тайлбарыг хэрэгжүүлэх боломжтой гэдэгт итгэлтэй байх хэрэгтэй.
# Define the loss function
loss = tf.losses.mean_squared_error(y_true, y_pred)
# Compile the model
model.compile(optimizer='adam', loss=loss)
# use diverse dataset
from sklearn.utils import shuffle
X_train, y_train = shuffle(X_train, y_train)
Эцэст нь та бусад архитектур, арга зүйг туршиж үзэж болно. Тиймээс та загварын гүйцэтгэлийг нэмэгдүүлэх боломжтой, жишээлбэл анхаарлын механизмууд, GANs, эсвэл VAEs.
хариу үлдээх