1. Trang chủ
  2. » Luận Văn - Báo Cáo

Triển khai mạng Neuron trên GPU

71 8 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 71
Dung lượng 2,62 MB

Nội dung

Triển khai mạng Neuron trên GPU Triển khai mạng Neuron trên GPU Triển khai mạng Neuron trên GPU luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI TÊN ĐỀ TÀI: TRIỂN KHAI MẠNG NEURON TRÊN GPU Chuyên ngành: Kỹ thuật điện tử LUẬN VĂN THẠC SĨ KỸ THUẬT Học viên: Trịnh Đức Bình Ngƣời hƣớng dẫn: PGS TS Nguyễn Đức Minh HÀ NỘI - 2018 MỤC LỤC MỤC LỤC Lời cam đoan Danh mục ký hiệu, chữ viết tắt Danh mục hình vẽ, đồ thị MỞ ĐẦU CHƢƠNG 1: GIỚI THIỆU CHƢƠNG 2: TỔNG QUAN VỀ MẠNG NƠ RON NHÂN TẠO 10 2.1 Mơ hình đặc trƣng mang nơ ron nhân tạo 10 2.1.1 Cấu trúc hoạt động nơ ron 10 2.1.2 Mơ hình mạng nơ ron 12 2.1.3 Các đặc trƣng mạng nơ ron nhân tạo 13 2.2 Kiến trúc mạng nơ ron đa lớp truyền thẳng(MLP) 14 2.2.1 Huấn luyện mạng nơ ron 16 2.2.2 Học có giám sát mạng nơ ron 17 2.2.3 Giải thuật lan truyền ngƣợc (Backpropagation Algorithm) 18 2.2.4 Overfitting mạng nơ ron 28 CHƢƠNG MẠNG NƠ RON TÍCH CHẬP 30 3.1 Kiến trúc mạng nơ ron tích chập 30 3.2 Các thành phần mạng nơ ron tích chập 31 3.2.1 Convolutional 31 3.2.2 Pooling 34 3.2.3 Lớp FC – fully connected 35 3.3 Mơ hình hoạt động 36 3.3.1 Xây dựng mạng 36 3.3.2 Huấn luyện tham số mạng 37 3.3.3 Ứng dụng mạng nơ ron tích chập mơ hình hay đƣợc sử dụng 37 CHƢƠNG ỨNG DỤNG GPU TRONG TRIỂN KHAI MẠNG NƠ RON 39 4.1 Tính tốn song song GPU 39 4.2 Lập trình CUDA 41 4.3 PyTorch framework 45 4.3.1 Giới thiệu PyTorch 45 4.3.2 Sử dụng Pytorch framework việc xây dựng mạng nơ ron 48 CHƢƠNG BÀI TOÁN STYLE TRANSFER 50 5.1 Mục tiêu toán hƣớng tiếp cận 50 5.2 Hàm mát toán style transfer 53 5.3 Chuyển đổi phong cách cho ảnh (style transfer) 55 5.4 Xây dựng mạng nơ ron giải toán style transfer 57 5.4.1 Cấu trúc thành phần mạng nơ ron 57 CHƢƠNG 6: KẾT QUẢ ĐẠT ĐƢỢC 63 TÀI LIỆU THAM KHẢO 71 Lời cam đoan Tôi xin cam đoan kết trình bày luận văn thực dƣới hƣớng dẫn PGS TS Nguyễn Đức Minh Tất tham khảo nghiên cứu liên quan nêu rõ nguồn gốc cách rõ ràng từ danh mục tài liệu tham khảo Luận văn khơng chép tài liệu, cơng trình nghiên cứu từ ngƣời khác mà không rõ mặt tài liệu tham khảo Hà nội, ngày 28 tháng 03 năm 2018 Học viên Trịnh Đức Bình Danh mục ký hiệu, chữ viết tắt Số thứ tự Ký hiệu, viết tắt Tên đầy đủ Giải thích Artificial Neural Network Convolution Neural Network Mạng nơ ron nhân tạo SGD Stochastic Gradient Descent Thuật toán tối ƣu hàm lỗi FC Full-Connected Mạng kết nối đầy đủ ANN CNN Mạng nơ ron tích chập Danh mục hình vẽ, đồ thị Hình 2-1 Cấu trúc nơ ron 10 Hình 2-2 Kiến trúc mạng nơ ron 12 Hình 2-3 Kiến trúc truyền thẳng 13 Hình 2-4 Kiến trúc phản hồi 13 Hình 2-5 Overfitting 29 Hình 3-1 Mơ hình mạng nơ ron tích chập 31 Hình 3-2 Convolution 32 Hình 3-3 CNN với feature map 32 Hình 3-4 Hàm ReLu 34 Hình 3-5 Pooling 35 Hình 3-6 Ảnh liệu tập mẫu CIFAR-10 36 Hình 3-7 Kết sau lớp convolution 37 Hình 4-1 Cấu trúc GPU 39 Hình 4-2 Quy trình vận hành chƣơng trình cuda 41 Hình 4-3 Cấu trúc Grid 43 Hình 4-4 Ví dụ Pytorch framework 48 Hình 5-1 Starry night 50 Hình 5-2 Em bé Hồ Gƣơm 51 Hình 5-3 Ảnh sau chuyển đổi 52 Hình 5-4 Ảnh sau qua filter 53 Hình 5-5 Mơ hình mạng 54 Hình 5-6 Quá trình huấn luyện mạng 56 Hình 5-7 Hàm ELU 58 Hình 5-8 Ma trận convolution 60 Hình 5-9 Ma trận transposed 61 Hình 5-10 Residual block 62 MỞ ĐẦU Mạng nơ ron nhân tạo mơ hình xử lý thơng tin dựa hoạt động mạng nơ ron sinh học Nó đƣợc đời vào khoảng 60 năm trƣớc, nhƣng vài năm trở lại đây, chứng kiến hồi sinh mạnh mẽ Mạng nơ ron nhân tạo đƣợc cấu thành số lƣợng lớn nơ ron, nơ ron gắn với trọng số trọng số liên kết mạng, chúng làm việc thống để giải vấn đề Nhƣng tùy vào ứng dụng, mạng nơ ron mang kiến trúc khác nhau, cho phép thông tin nơ ron mạng lan truyền theo nhiều phƣơng pháp định hƣớng thích hợp Mạng nơ ron tích chập phát triển mạng nơ ron nhân tạo Hiện nay, mơ hình đƣợc ứng dụng rộng rãi đạt đƣợc nhiều kết tốt hầu hết lĩnh vực trí tuệ nhân tạo, bao gồm thị giác máy tính, xử lý ngơn ngữ tự nhiên, nhận diện giọng nói, nhận diện hình ảnh, nhận diện khn mặt Với phát triển máy tính loại GPU hỗ trợ tính tốn song song, khả tính tốn đƣợc tăng tốc lên nhiều Nhờ sức mạng mạnh mạng nơ ron nhân tạo đƣợc tận dụng tối đa Nó cho phép xây dựng mạng nơ ron “sâu” có nhiều tầng hơn, cấu trúc phức tạp để giải tốn cụ thể Bài tốn “Style Transfer” mơ hình xử lý ảnh dựa kiến trúc mạng nơ ron tích chập Mơ hình cho phép trích rút đặc trƣng phong cách (style) ảnh áp dụng (transfer) phong cách lên nội dung ảnh khác Dƣới hƣớng dẫn thầy PGS TS Nguyễn Đức Minh xây dựng phát triển mơ hình mạng nơ ron tích chập để giải tốn “Style Transfer” Mơ hình có tích hợp GPU việc hỗ trợ tính tốn song song, giúp trình huấn luyện mạng nhƣ trình xử lý ảnh diễn nhanh Tổng quan sở lý thuyết, thuật toán kết đạt đƣợc, nhƣ đánh giá cải tiến đƣợc trình bày luận văn phần Tôi xin chân thành cảm ơn thầy PGS TS Nguyễn Đức Minh giúp đỡ dẫn cho tơi để tơi hồn thành luận văn Tơi cảm ơn gia đình, bạn bè ủng hộ giúp đỡ, động viên trình nghiên cứu nhƣ thực luận văn CHƢƠNG 1: GIỚI THIỆU Mơ hình mạng nơ ron tích chập phát triển nhanh chóng đƣợc áp dụng nhiều lĩnh vực sống Một ứng dụng phổ biến mạng nở ron tích chập xử lý, phân loại ảnh Có nhiều mơ hình đƣợc dựng thực tế kiểm nghiệm mang lại kết xác Một mạng nơ ron sau huấn luyện phân loại ảnh có khả “hiểu” đƣợc ảnh hay trích rút đặc trƣng ảnh Một mơ hình trích rút phong cách(style) ảnh áp dụng phong cách lên ảnh khác gọi toán “Style Transfer” Luận văn trình bày chi tiêt trình xây dựng mơ hình mạng nơ ron để giải toán Với yêu cầu mục tiêu đề trên, cấu trúc luận văn bao gồm nội dung sau đây: Chƣơng 1: Giới thiệu Chƣơng 2: Tổng quan mạng nơ ron nhân tạo Chƣơng 3: Mạng nơ ron tích chập Chƣơng 4: Ứng dụng GPU triển khai mạng nơ ron Chƣơng 5: Bài toán style transfer Chƣơng 6: Kết đạt đƣợc CHƢƠNG 2: TỔNG QUAN VỀ MẠNG NƠ RON NHÂN TẠO Mạng nơ ron nhân tạo (Artificial Neural Network- ANN) mơ hình xử lý thơng tin đƣợc mô dựa hoạt động hệ thống thần kinh sinh vật ANN đƣợc tạo lên từ số lƣợng lớn phần tử (nơ ron) kết nối với thơng qua liên có trọng số, làm việc nhƣ thể thống để giải vấn đề cụ thể ANN có khả học(thông qua huấn luyện), khả lƣu giữ kết học sử dụng tri thức việc dự đoán liệu chƣa biết Về chất q trình học q trình hiệu chỉnh trọng số liên kết nơ ron Tùy vào ứng dụng cụ thể, mạng nơ ron mang kiến trúc khác nhau, cho phép thông tin nơ ron mạng đƣợc lan truyền theo phƣơng pháp định hƣớng thích hợp 2.1 Mơ hình đặc trƣng mang nơ ron nhân tạo 2.1.1 Cấu trúc hoạt động nơ ron Một nơ ron đơn vị xử lý thông tin thành phần mạng nơ ron Cấu trúc nơ ron đƣợc mơ tả nhƣ Hình 2-1 Hình 2-1 Cấu trúc nơ ron Các thành phần nơ ron bao gồm: 10 5.4 Xây dựng mạng nơ ron giải toán style transfer 5.4.1 Cấu trúc thành phần mạng nơ ron Mạng nơ ron bao gồm 16 lớp tƣơng ứng với sơ đồ [2D Convolution Layer] | [Batch Normalization] | [2D Convolution Layer] | [Batch Normalization] | [2D Convolution Layer] | [Batch Normalization] | [Residual Block] | [Residual Block] | [Residual Block] | [Residual Block] | [Residual Block] | [2D Deconvolution Layer] | [Batch Normalization] | [2D Deconvolution Layer] | [Batch Normalization] | [2D Deconvolution Layer] 5.4.1.1 Convolution Lớp convolution bao gồm thành phần tƣơng tự CNN (convolution, pooling), bỏ qua lớp kết nối đầy đủ (full-connected) 57 Hàm kích hoạt ELU: Hình 5-7 Hàm ELU 5.4.1.2 Batch normalization Normalization phƣơng pháp cho phép cải thiện hiệu suất mạng nơ ron Dữ liệu đầu vào trƣớc cho vào mạng đƣợc hiệu chỉnh để đảm bảo nằm miền giới hạn(thƣờng (0,1) (-1,1)) Việc normalization đƣợc áp dụng cho mini-batch Các bƣớc thực nhƣ sau: X liệu đầu vào mini-batch B = {x1,x2,….xm} Y tập đầu tƣơng ứng sau normalization Y = {y1,y2,….ym} m    xi m i 1 (lấy trung bình) 58 m    ( xi   ) (phƣơng sai) m i 1 xi  ( xi   )  (normalize) yi   xi   (đầu ra) Hai hệ số   scale shift Tác dụng việc áp dụng normalization - Dữ liệu đầu vào đƣợc hiệu chỉnh để đảm bảo không cao khơng q thấp Do sử dụng tỉ số học cao để tăng tốc trình học - Giảm overfitting tập liệu huấn luyện tập kiểm tra gần 5.4.1.3 Deconvolution (transposed convolution) Về mặt tƣ tƣởng, deconvolution có mục đích ngƣợc lại với q trình convolution, Nó thực việc tái tạo lại ảnh ban đầu sau cho ảnh qua lớp convolution Giả sử ảnh [4x4] qua lớp convoltion có stride = 1, kernel [3x3] cho đầu ảnh [2x2] Lớp deconvolution cố gắng dựng lại ảnh [4x4] ban đầu từ ảnh [2x2] Để thực điều này, trình tƣơng tự nhƣ convolution đƣợc diễn Về chất tính tốn, convolution dựa ma trận convolution đƣợc xây dựng từ kernel - Kernel [3x3] đƣợc chuyển đổi thành ma trận convolution kích thƣớc [4x16] 59 Hình 5-8 Ma trận convolution - Ảnh kích thƣớc[4x4] chuyển vector [16x1] - Tích ma trận có đầu vector [4x1] biểu diễn ảnh [2x2] pixel đầu vào tƣơng ứng với pixel đầu Ta có quan hệ 9-1 Ngƣợc lại muốn xây dựng ảnh [4x4] từ ảnh kích thƣớc [2x2] Ta cần xây dụng ma trận deconvolution(transposed matrix) kích thƣớc [16x4] - Ảnh đầu [2x2] chuyển vector [4x1] - Tích ma trận vector đầu [16x4] biểu diễn ảnh [4x4] 60 Hình 5-9 Ma trận transposed Cần phải xây dựng ma trân deconvolution thỏa mãn quan hệ 1-9 Q trình deconvolution thực có ý nghĩa ta muốn nguyên kích thƣớc ảnh đầu 5.4.1.4 Residual block Về lý thuyết, mơ hình mạng nơ ron sâu(càng nhiều lớp) tốt cho toán Vấn đề tăng số lớp mạng đồng nghĩa với việc tăng số lƣợng tham số Điều làm trình huấn luyện tốn thêm nhiều thời gian Một vấn 61 đề làm cho mạng sâu không cố nghĩa đơn tăng số lớp mạng, Nó phát sinh vấn đề điều chỉnh tỉ số học, nhƣ việc suy thối độ xác Một giải pháp đƣợc đƣa sử dụng Residual block Một residual block có cấu trúc nhƣ hình vẽ Hình 5-10 Residual block Viêc áp dung residual block mang lại kết tốt so sánh với mạng có số lớp Chúng ta kết hợp thêm số phƣơng pháp nhƣ batch normalization để tăng hiệu suất mạng 5.4.1.5 Renderscript Render script framework Android Với tảng ngôn ngữ C, Render script đƣợc thiết kế tập trung cho việc xử lý đồ họa tính tốn song song Render script đƣợc thực thi hệ thống CPU multi-core hay GPU cho phép nâng cao hiệu tính tốn Qua trình huấn luyện mang nơ ron thực chất thực thi phép tính tên ma trận với lƣợng tham số bƣớc lặp lớn Redenscript thực cơng cụ hữu ích góp phần tăng tốc độ xử lý Một đoạn mã script bao gồm thành phần chính: hàm, biến kernel 62 CHƢƠNG 6: KẾT QUẢ ĐẠT ĐƢỢC Triển khai thực tế mơ hình trình bày trên, mạng nơ ron đƣợc xây dựng bao gồm 16 lớp có kết nối theo thứ tự [2D Convolution Layer] | [Batch Normalization] | [2D Convolution Layer] | [Batch Normalization] | [2D Convolution Layer] | [Batch Normalization] | [Residual Block] | [Residual Block] | [Residual Block] | [Residual Block] | [Residual Block] | [2D Deconvolution Layer] | [Batch Normalization] | [2D Deconvolution Layer] | [Batch Normalization] | [2D Deconvolution Layer] 63 Mơ hình mạng đƣợc tái triển khai tảng di động (Android) Mỗi ảnh để chọn style(style image) tƣơng ứng với tham số Quá trình huấn luyện qua mẫu ảnh nội dung thay đổi tham số mạng để tối thiểu hàm mát Kết thu đƣợc sau huấn luyện tham số đƣợc load lên mơ hình mạng di động Mỗi ảnh nội dung đầu vào(content image), qua mơ hình mạng thu đƣợc ảnh đầu mang phong cách ảnh style giữ nội dung ảnh content Renderscript Android hỗ trợ việc tính tốn song song mConvLayer[0] = new Convolution2D(ctx, mRS, 3, 32, 9, 1, 4); mConvLayer[1] = new Convolution2D(ctx, mRS, 32, 64, 4, 2, 1); mConvLayer[2] = new Convolution2D(ctx, mRS, 64, 128, 4, 2, 1); mResidualLayer[0] mResidualLayer[1] mResidualLayer[2] mResidualLayer[3] mResidualLayer[4] = = = = = new new new new new ResidualBlock(ctx, ResidualBlock(ctx, ResidualBlock(ctx, ResidualBlock(ctx, ResidualBlock(ctx, mRS, mRS, mRS, mRS, mRS, 128, 128, 128, 128, 128, 128); 128); 128); 128); 128); mDeconvLayer[0] = new Deconvolution2D(ctx, mRS, 128, 64, 4, 2, 1); mDeconvLayer[1] = new Deconvolution2D(ctx, mRS, 64, 32, 4, 2, 1); mDeconvLayer[2] = new Deconvolution2D(ctx, mRS, 32, 3, 9, 1, 4); mBatchNormLayer[0] mBatchNormLayer[1] mBatchNormLayer[2] mBatchNormLayer[3] mBatchNormLayer[4] = = = = = new new new new new BatchNormalization(ctx, BatchNormalization(ctx, BatchNormalization(ctx, BatchNormalization(ctx, BatchNormalization(ctx, mRS, mRS, mRS, mRS, mRS, 32); 64); 128); 64); 32); 64 Hình 6-1 Starry night 65 Hình 6-2 Em bé Hồ Gươm 66 Hình 6-3 Ảnh sau kết hợp 67 Hình 6-4 Ảnh phong cảnh Hà Giang 68 Hình 6-5 Bức ảnh “The great wave” 69 Hình 6-6 Ảnh sau kết hợp 70 TÀI LIỆU THAM KHẢO Michael Nielsen, Pavel Dudrenov, Neural Networks and Deep Learning, San Francisco, 2015 D Kriesel, A Brief Introduction to Neural Networks, University of Bonn, Germany, 2005 W Schiffmann, M Joost, R Werner, Optimization of the backpropagation Algorithm for Training Multilayer Perceptrons, University of Koblenz, Institute of Physics, Rheinau 156075 Koblenz, 1994 Lee, H., Cher, C and Huang, T., Learning efficiency improment of backpropagation algorithm by error saturation prevention method, National Taiwan University of Science and Technology, Department of Electronic Engineering, 2001 http://ufldl.stanford.edu/tutorial/ http://pytorch.org/docs/stable/nn.html https://arxiv.org/pdf/1508.06576.pdf 71 ... 3.3.1 Xây dựng mạng 36 3.3.2 Huấn luyện tham số mạng 37 3.3.3 Ứng dụng mạng nơ ron tích chập mơ hình hay đƣợc sử dụng 37 CHƢƠNG ỨNG DỤNG GPU TRONG TRIỂN KHAI MẠNG NƠ RON... FC-Layer cuối mạng, sử dụng “special skip connection” “batch normalization” 38 CHƢƠNG ỨNG DỤNG GPU TRONG TRIỂN KHAI MẠNG NƠ RON Thực tế, mơ hình mạng nơ ron đƣợc đề cập từ sớm nhƣng thực phát triển mạnh... lƣợng neuron, filter layer lớn Đƣợc coi mạng neural phổ biến rộng rãi khả CNNs – ZF Net: Là mạng CNNs đƣợc phát triển Matthew Zeiler Rob Fergus (ZF viết tắt Zeiler Fergus) Mạng neural đƣợc phát triển

Ngày đăng: 14/02/2021, 22:45

w