Chương 1 Giới thiệu Gần đây, các nghiên cứu về khoa học thần kinh đã chuyển hướng từ Mạng lưới Neuron nhân tạo sang SNN (Spiking Neural Networks). Sự hình thành của mô hình SNN xuất phát từ ý tưởng cho rằng các tín hiệu neuron chính là những xung điện ngắn và sự liên tục của các xung điện đó mang theo các tín hiệu sinh học khi não hoạt động [1]. Dựa vào ý tưởng này đã có rất nhiều mô hình được phát triển từ đơn giản đến phức tạp. Bằng trực giác thông thường chúng ta có thể nhận thấy rằng các mô hình càng phức tạp và mang đến nhiều ý nghĩa sinh học hơn thì sẽ cần đến một nguồn tài nguyên vi tính lớn hơn, tuy nhiên việc mô phỏng hoạt động của hàng ngàn tế bào thần kinh trong thời gian thực là điều không thể ngay cả khi có một siêu máy tính.
Ngoài thực tế rằng việc mô phỏng một mạng lưới neuron trong thời gian thực và quy mô lớn là điều cần thiết để đem về các thông tin về sinh vật học, thì một hệ thống siêu máy tính cỡ lớn thì cũng sẽ tiêu tốn rất nhiều năng lượng, trong khi toàn bộ hoạt động của não bộ lại tiêu tốn một nguồn năng lượng rất nhỏ. Điều này cho thấy rằng chúng ta cần có một nền tảng phù hợp để mô phỏng các mô hình neuron. Nhờ vào khả năng tính toán chuyên sâu và sự kết nối tốc độ cao của mạng neuron mà các mô phỏng thực hiện dựa vào siêu máy tính hay FPGA đã thực hiện thành công, tuy nhiên chỉ đối với số lượng neuron khá hạn chế. Các thí nghiệm tiến hành trên các mô hình như Hogkin-Huxley cho thấy rằng chỉ với vài chục sợi gai neuron trong thời gian thực đã đưa ra được những kết quả không ngờ về các trạng thái của neuron [2].
Tuy nhiên, việc mô phỏng toàn bộ quá trình hoạt động của não bộ, điều mà vẫn chưa thực hiện thành công được, và những hứa hẹn về việc làm rõ hơn được hoạt động của não bộ đã làm dấy lên sự quan tâm của các nhà nghiên cứu trong lĩnh vực này. Trong khi đó, xu hướng hiện nay là thực hiện các ứng dụng khoa học phức tạp bằng GPU (bộ vi xử lý đồ họa). Trong một hệ thống có sử dụng GPU, các hoạt động có chi phí tính toán cao đều có thể được xử lý bằng GPU thay vì CPU. Các GPU đã và đang được phát triển để có thể tận dụng các bộ nhớ và chạy được đồng 6 thời nhiều mạch trong lúc các mạch này đang sắp xếp dữ liệu.
Do đó, GPU có thể điều hành được các chương trình tính toán chuyên sâu nhanh hơn nhiều lần so với CPU. Cùng với GPU, OpenCL và CUDA (ngôn ngữ lập trình cho phép lập trình song song giữa GPU và CPU) được tung ra để có thể hỗ trợ tối đa cho việc lập trình GPU. Những công nghệ này cho phép các lập trình viên ứng dụng thông thường có thể khai thác tính năng khác của GPU ngoài đồ họa. Cả công nghệ CUDA của Nvidia và OpenCL [3] của AMD đều được đưa ra để tương thích với các hệ thống có nhu cầu tính toán cao.
Với tính lưu động cao, OpenCL được ưa dùng hơn so với các công nghệ khác [4]. Do bởi mô hình SNN được xem là một ứng dụng máy tính phức tạp, cho nên sự kết hợp giữa GPU và mô hình mạng neuron hứa hẹn sẽ đưa ra một sự mô phỏng hiệu quả. Đã có một vài dự án được tiến hành dựa theo ý tưởng này với mục đích là kiểm nghiệm hoạt động của GPU trên các ứng dụng tính toán cao nói chung, và trên mô hình SNN nói riêng. Mặc dù mô hình SNN được sử dụng trong dự án trước đó là các mô hình mạng neuron đơn, không theo hệ thống mạng lưới, nhưng kết quả cho thấy rằng các hoạt động tiến hành trên GPU có những cải tiến đáng kể so với các nền tảng khác [5] [6].
Kết quả đạt được cao hơn lên đến 857.3 lần khi sử dụng Nvidia’s Tesla C2050 so với khi tiến hành trên Intel CPU Core 2 Quad [4]. Những kết quả này đã khuyến khích những nghiên cứu tương tự trên các mô hình SNN phức tạp hơn, như là mô hình SNN theo hệ thống mạng lưới. Trong bài này, sự mô phỏng mô hình neuron theo mạng lưới sẽ được trình bày để cho thấy các hoạt động hiệu quả được tiến hành trên GPU, cũng là điều sẽ mang lại ý nghĩa sinh học quan trọng. Mục đích của bài viết này là để tìm ra câu trả lời cho những vấn đề sau: • Việc tiến hành một mô hình SNN trên GPU sẽ nhanh hơn được bao nhiêu? • Liệu tiến hành trên các nền tảng khác sẽ đưa ra các kết quả khác nhau? Và nếu có thì đâu là nguyên nhân? • Tiến hành mô hình IO trên một nền tảng nhất định nào đó có tiện ích hơn không? • Hoạt động của ứng dụng có phụ thuộc vào độ trùng lặp và chính xác của sự mô phỏng? Ví dụ như độ chính xác đơn hay kép? • Xác định cận trên của số lượng các neuron được mô phỏng bằng một nền tảng GPU nhất định? 7 1.
Mục tiêu bài viết Bài viết cần đạt được các mục tiêu sau: • Lựa chọn mô hình neuron: Một số mô hình sẽ được nghiên cứu và đánh giá dựa vào độ phức tạp trong tính toán, mức độ quan trọng về sinh vật học và tính thích hợp khi thực hiện trên nền tảng GPU. Cuối cùng sẽ chọn ra một mô hình để tiến hành. • Thực hiện mô hình trên nền tảng GPU: Mô hình được lựa chọn sẽ được thực hiện và sử dụng công nghệ CUDA trên Nvidia’s GeForce GTX 1080Ti. Việc thực hiện cần được tiến hành trên một số lượng đáng kể các tế bào neuron và bằng một quá trình mô phỏng đủ nhanh để tiếp cận được với hoạt động trong thời gian thực của mô hình SNN.
• So sánh với hoạt động tương đương trên CPU: Kết quả sẽ được đánh giá so sánh với việc thực hiện bằng các mô hình tương đương trên các nền tảng khác như là CPU sử dụng ngôn ngữ C. Bố cục luận văn Luận văn này được sắp xếp theo bố cục sau: • Chương 2 trình bày lý thuyết về mô hình neuron để mô phỏng mô hình SNN • Chương 3 đưa ra những phân tích về nền tảng GPU cũng như là về ngôn ngữ lập trình CUDA để tương thích với mô hình được lựa chọn • Chương 4 sẽ bàn về chi tiết các mô hình neuron của chùm dây thần kinh dưới tiểu não (Inferior Olive - IO) trong hệ thống mạng lưới, nghiên cứu quá trình tiến hành trên CPU và cả trên GPU. • Chương 5 sẽ nói về việc hiện thực hệ thống mô phỏng. • Cuối cùng, chương 6 sẽ đưa ra kết quả đạt được và thảo luận về các kết quả đó.
Kết luận của luận văn này này đồng thời đề xuất thêm các nghiên cứu khác cho chủ đề này. 8 Chương 2 Mô hình mô phỏng não bộ Mô hình sinh học neuron mang đặc tính của tế bào thần kinh được trình bày dưới dạng toán học. Để hiểu thêm về tầm quan trọng và trạng thái của mô hình neuron một cách tổng quát, những kiến thức thiết yếu về bộ não con người, về hệ thần kinh trung ương, về động lực học neuron và vô số các mô hình neuron sẽ được giới thiệu trong chương này. Sự so sánh giữa các mô hình neuron khác nhau ở cuối chương này sẽ cho thấy được tầm quan trọng của mô hình Hodgkin-Huxley trong lĩnh vực này.
Não bộ, mạng neuron và neuron Hình 2.1 - Cấu tạo của bộ não người [7] 9 Não bộ được xem là cơ quan quan trọng nhất và tinh vi nhất trong cơ thể con người bởi nó là bộ phận giúp con người suy nghĩ và không thể thay thế bởi cơ quan nào khác được. Nó có thể xử lý dữ liệu với tốc độ cực kỳ nhanh, tiêu tốn ít năng lượng và có thể cùng lúc điều khiển được thần kinh ngoại biên. Lấy cảm hứng từ những khả năng đặc biệt này của não bộ, những ý tưởng về trí tuệ nhân tạo và điều khiển bằng robot đã không ngừng phát triển. Tuy nhiên, việc tạo ra một hệ thống có thể thực hiện những hoạt động tương tự đó vẫn là một thách thức đối với các nhà khoa học.
Chính vì vậy, càng ngày càng có nhiều những nghiên cứu được tiến hành để có thể hiểu rõ hơn về bộ não người. Để giải thích rõ hơn về hoạt động của não người, đã có rất nhiều ý tưởng được kiến nghị và thử nghiệm trên nhiều thí nghiệm khác nhau. Franz Joseph Gall, một nhà vật lý học và giải phẫu học neuron người Đức đã đề xuất ý kiến rằng những khu vực khác nhau trên não bộ sẽ chịu trách nhiệm cho những hoạt động khác nhau. Chính ý tưởng này của ông đã đặt viên đá nền tảng cho những nghiên cứu về não bộ sau này.
Thông qua việc tiến hành thí nghiệm để giám sát các hoạt động của não bộ trong khi nó đang thực hiện các nhiệm vụ cụ thể, não có thể được chia ra thành 3 khu vực: não trước, não giữa và não sau. Não bộ cùng với tủy sống được gọi là hệ thần kinh trung ương. Hệ thần kinh trung ương là một khái niệm rộng lớn bao gồm 7 phần chính: 1. Não trung gian và 7.
Hai bán cầu não, như hình 2. Hệ thần kinh trung ương của chúng ta có tính đối xứng hai bên, tức là nó sẽ gồm có các cặp đối xứng nhau. Mỗi cặp này đều hoạt động cùng nhau hoặc đơn lẻ để hình thành nên hành vi và nhận thức của con người. Tủy sống là hệ thống tỏa ra khắp nơi để có thể tiếp nhận thông tin từ da, khớp, và cơ bắp có chức năng điều khiển hoạt động của chân tay và thân người.
Tủy sống và não bộ được liên kết với nhau bởi thân não để điều chỉnh mức độ thức tỉnh cũng như nhận thức của con người. Thân não bao gồm não dưới, cầu não và não giữa. Não dưới chịu trách nhiệm cho các hoạt động tự trị quan trọng như là tiêu hóa, hô hấp và nhịp tim. Cầu não là nơi truyền thông tin về chuyển động từ hai bán cầu não đến tiểu não.
Não giữa chịu trách nhiệm về các giác quan và điều khiển hoạt động của chúng như là chuyển động mắt và sự phối hợp các phản xạ của thị giác và thính giác. Tiểu não điều chỉnh mức độ và phạm vi của chuyển động và có liên quan đến việc học hỏi các kĩ năng vận động.