PyTorch дахь Convolutional Neural Network (CNN)-ийн архитектур нь эргэлтийн давхаргууд, нэгтгэх давхаргууд, бүрэн холбогдсон давхаргууд, идэвхжүүлэх функцууд гэх мэт янз бүрийн бүрэлдэхүүн хэсгүүдийн дизайн, зохион байгуулалтыг хэлнэ. Архитектур нь сүлжээ нь оролтын өгөгдлийг хэрхэн боловсруулж, утга учиртай гаралтыг бий болгохыг тодорхойлдог. Энэ хариултанд бид PyTorch дахь CNN-ийн архитектурын талаар нарийвчилсан бөгөөд иж бүрэн тайлбарыг өгөх бөгөөд түүний үндсэн бүрэлдэхүүн хэсгүүд болон тэдгээрийн функцүүдэд анхаарлаа хандуулах болно.
CNN нь ихэвчлэн дараалсан байдлаар байрлуулсан олон давхаргаас бүрддэг. Эхний давхарга нь ихэвчлэн оролтын өгөгдөл дээр эргэлт хийх үндсэн үйлдлийг гүйцэтгэдэг эргэлтийн давхарга юм. Convolution нь шинж чанаруудыг задлахын тулд оролтын өгөгдөлд суралцах боломжтой шүүлтүүрүүдийн багцыг (мөн цөм гэж нэрлэдэг) ашиглах явдал юм. Шүүлтүүр бүр өөрийн жин болон оролтын орон нутгийн хүлээн авах талбарын хооронд цэгийн бүтээгдэхүүн хийж, онцлогийн газрын зургийг гаргадаг. Эдгээр онцлог газрын зураг нь оролтын өгөгдлийн ирмэг, бүтэц, хэв маяг гэх мэт өөр өөр талуудыг авдаг.
Гүйлгээний давхаргын дараа шугаман бус идэвхжүүлэх функцийг функцийн газрын зурагт элементийн хувьд ашигладаг. Энэ нь шугаман бус байдлыг сүлжээнд нэвтрүүлж, оролт ба гаралтын хоорондох нарийн төвөгтэй харилцааг сурах боломжийг олгодог. CNN-д ашиглагддаг нийтлэг идэвхжүүлэх функцууд нь ReLU (Rectified Linear Unit), sigmoid, tanh зэрэг орно. ReLU нь алга болох градиент асуудлыг багасгахад хялбар, үр дүнтэй байдаг тул өргөн хэрэглэгддэг.
Идэвхжүүлсэн функцийн дараа чухал шинж чанаруудыг хадгалахын зэрэгцээ газрын зургийн орон зайн хэмжээг багасгахын тулд нэгтгэх давхаргыг ихэвчлэн ашигладаг. Хамгийн их цуглуулах эсвэл дундаж нэгтгэх гэх мэт нэгтгэх үйлдлүүд нь онцлог газрын зургийг давхцахгүй бүс болгон хувааж, бүс тус бүрийн утгыг нэгтгэдэг. Энэхүү доош түүвэрлэх ажиллагаа нь сүлжээний тооцооллын нарийн төвөгтэй байдлыг бууруулж, оролтын өөрчлөлтөд илүү бат бөх болгодог.
Оролтын өгөгдлөөс улам хийсвэр, өндөр түвшний онцлогуудыг гаргаж авахын тулд эргэлт, идэвхжүүлэх, нэгтгэх давхаргууд нь ихэвчлэн олон удаа давтагддаг. Энэ нь эвдрэлийн давхарга бүр дэх шүүлтүүрийн тоог нэмэгдүүлэх эсвэл хэд хэдэн давхаргын давхаргыг нэгтгэх замаар хийгддэг. Сүлжээний гүн нь оролтын шаталсан дүрслэлд суралцах боломжийг олгодог бөгөөд доод түвшний болон өндөр түвшний шинж чанаруудыг хоёуланг нь олж авдаг.
Онцлог шинж чанарыг задлах процесс дууссаны дараа гаралтыг 1D вектор болгон тэгшлээд нэг буюу хэд хэдэн бүрэн холбогдсон давхаргуудаар дамжуулна. Эдгээр давхарга нь нэг давхарга дахь нейрон бүрийг дараагийн давхаргын нейрон бүртэй холбож, нарийн төвөгтэй харилцааг сурах боломжийг олгодог. Бүрэн холбогдсон давхаргууд нь зургийн ангиллын даалгаврын ангиллын магадлал гэх мэт сурсан шинж чанаруудыг хүссэн гаралт руу буулгахын тулд сүлжээний эцсийн давхаргад ихэвчлэн ашиглагддаг.
Сүлжээний гүйцэтгэл, ерөнхий байдлыг сайжруулахын тулд янз бүрийн арга техникийг ашиглаж болно. Сургуулиа орхих эсвэл багцаар хэвийн болгох гэх мэт зохицуулалтын аргуудыг хэт их ачаалал өгөхөөс сэргийлж, сүлжээний үл үзэгдэх өгөгдлийг нэгтгэх чадварыг сайжруулахад ашиглаж болно. Dropout нь сургалтын явцад мэдрэлийн эсүүдийн нэг хэсгийг санамсаргүй байдлаар тэг болгож, сүлжээг илүүдэл дүрслэлд суралцахад хүргэдэг. Багцыг хэвийн болгох нь давхарга бүрийн оролтыг хэвийн болгож, дотоод ковариацын шилжилтийг багасгаж, сургалтын үйл явцыг хурдасгадаг.
PyTorch дахь CNN-ийн архитектур нь эргэлтийн давхаргууд, идэвхжүүлэх функцууд, нэгтгэх давхаргууд, бүрэн холбогдсон давхаргууд зэрэг бүрэлдэхүүн хэсгүүдийн зохион байгуулалт, дизайныг агуулдаг. Эдгээр бүрэлдэхүүн хэсгүүд нь оролтын өгөгдлөөс утга учиртай шинж чанаруудыг гаргаж авах, суралцахын тулд хамтран ажиллаж, сүлжээнд үнэн зөв таамаглал эсвэл ангилал хийх боломжийг олгодог. Архитектурыг сайтар боловсруулж, тогтмолжуулах гэх мэт арга техникийг оруулснаар сүлжээний гүйцэтгэл, ерөнхий байдлыг сайжруулах боломжтой.
Сүүлийн үеийн бусад асуулт, хариулт Конволюцийн мэдрэлийн сүлжээ (CNN):
- Хамгийн том эргэлтийн мэдрэлийн сүлжээ юу вэ?
- Гаралтын сувгууд юу вэ?
- Оролтын сувгийн тоо (nn.Conv1d-ийн 2-р параметр) ямар утгатай вэ?
- Сургалтын үеэр CNN-ийн гүйцэтгэлийг сайжруулах нийтлэг аргууд юу вэ?
- CNN-ийг сургахад багцын хэмжээ ямар ач холбогдолтой вэ? Энэ нь сургалтын үйл явцад хэрхэн нөлөөлдөг вэ?
- Өгөгдлийг сургалт, баталгаажуулалтын багц болгон хуваах нь яагаад чухал вэ? Баталгаажуулахад ихэвчлэн хэр их өгөгдөл хуваарилагддаг вэ?
- Бид CNN-д зориулсан сургалтын мэдээллийг хэрхэн бэлтгэх вэ? Холбогдох алхмуудыг тайлбарлана уу.
- Конволюцийн мэдрэлийн сүлжээг (CNN) сургахад оновчтой болгох, алдагдлын функцийн зорилго юу вэ?
- CNN-ийг сургах явцад оролтын өгөгдлийн хэлбэрийг янз бүрийн үе шатанд хянах нь яагаад чухал вэ?
- Зурагнаас бусад өгөгдөлд эвхэгддэг давхаргыг ашиглаж болох уу? Жишээ үзүүлнэ үү.
Convolution neural network (CNN) дээрх бусад асуулт, хариултыг харах