Tổng quan về thƣ viện Tensorflow

Một phần của tài liệu Tìm hiểu mạng Generative Adversarial Networks (GANs) trong deep learning, áp dụng vào phân loại bệnh Phổi dựa trên ảnh Xray (Trang 31)

2.4.1. Khái niệm Tensorflow

Với sự bùng nổ của lĩnh vực Trí Tuệ Nhân Tạo – A.I. trong thập kỷ vừa qua, machine learning và deep learning rõ ràng cũng phát triển theo cùng. Và ở thời điểm hiện tại, TensorFlow chính là thƣ viện mã nguồn mở cho machine learning nổi tiếng nhất thế giới, đƣợc phát triển bởi các nhà nghiên cứu từ Google. Việc hỗ trợ mạnh mẽ các phép toán học để tính toán trong machine learning và deep learning đã giúp việc tiếp cận các bài toán trở nên đơn giản, nhanh chóng và tiện lợi hơn nhiều.

Các hàm đƣợc dựng sẵn trong thƣ viện cho từng bài toán cho phép TensorFlow xây dựng đƣợc nhiều neural network. Nó còn cho phép bạn tính toán song song trên nhiều máy tính khác nhau, thậm chí trên nhiều CPU, GPU trong cùng 1 máy hay tạo ra các dataflow graph – đồ thị luồng dữ liệu để dựng nên các model.

Kiến trúc TensorFlow hoạt động đƣợc chia thành 3 phần:  Tiền xử lý dữ liệu

 Dựng model

 Train và ƣớc tính model

Tensor đại diện cho các loại dữ liệu đƣợc đƣa vào trong Tensorflow. Mỗi thuộc tính trong tensor sẽ có những đặc điểm và tính năng khác nhau. Sau đây để hiểu hơn về Tensorflow, Bizfly sẽ có những thuộc tính cơ bản nhƣ :

 Rank: Trong các cấu trúc dữ liệu, thuộc tính bậc đƣợc hiểu một cách đơn giản chính là sự phân cấp bậc và là căn cứ cho việc phân loại các tensor. Mỗi tensor khi đƣợc phân bậc sẽ có tên gọi khác nhau, cụ thể bậc 0 là Scalar, bậc 1 là Vector bậc 2 là Matrix, các bậc cao hơn nữa sẽ đƣợc gọi là n-tensor.

32  Type: Kiểu dữ liệu của các element và là thuộc tính type duy nhất có trong tensor. Một tensor chỉ có một loại type duy nhất cho toàn bộ các element có trong tensor. Vì vậy mà cấu trúc dữ liệu có tính thống nhất.

2.4.2. Cách thức hoạt động

TensorFlow cho phép các lập trình viên tạo ra dataflow graph, cấu trúc mô tả làm thế nào dữ liệu có thể di chuyển qua 1 biểu đồ, hay 1 sê-ri các node đang xử lý. Mỗi node trong đồ thị đại diện 1 hoạt động toán học, và mỗi kết nối hay edge giữa các node là 1 mảng dữ liệu đa chiều, hay còn đƣợc gọi là „tensor‟.

cung cấp tất cả những điều này cho lập trình viên theo phƣơng thức của ngôn ngữ Python. Vì Python khá dễ học và làm việc, ngoài ra còn cung cấp nhiều cách tiện lợi để ta hiểu đƣợc làm thế nào các high-level abstractions có thể kết hợp cùng nhau. Node và tensor trong TensorFlow là các đối tƣợng Python, và các ứng dụng TensorFlow bản thân chúng cũng là các ứng dụng Python.

Các operation toán học thực sự thì không đƣợc thi hành bằng Python. Các thƣ viện biến đổi có sẵn thông qua TensorFlow đƣợc viết bằng các binary C++ hiệu suất cao. Python chỉ điều hƣớng lƣu lƣợng giữa các phần và cung cấp các high-level abstraction lập trình để nối chúng lại với nhau.Các ứng dụng TensorFlow có thể chạy trên hầu hết mọi mục tiêu thuận tiện: máy cục bộ, cụm trong đám mây, thiết bị iOS và Android, CPU hoặc GPU. Nếu bạn sử dụng đám mây của riêng Google, bạn có thể chạy TensorFlow trên silicon Đơn vị xử lý TensorFlow (TPU) tùy chỉnh của Google để tăng tốc hơn nữa.Tuy nhiên, các mô hình kết quả đƣợc tạo bởi TensorFlow, có thể đƣợc triển khai trên hầu hết mọi thiết bị nơi chúng sẽ đƣợc sử dụng để phục vụ dự đoán. TensorFlow cải tiến framework theo nhiều cách dựa trên phản hồi của ngƣời dùng, để dễ dàng và hiệu quả hơn khi làm việc cùng nó (ví dụ: bằng cách sử dụng các Keras API liên quan đơn giản cho việc train model). Train phân tán dễ chạy hơn nhờ vào API mới và sự hỗ trợ cho TensorFlow Lite cho phép triển khai các mô hình trên khá nhiều nền tảng khác nhau.

2.4.3. Các Component của TensorFlow 2.4.3.1. Tensor 2.4.3.1. Tensor

Tên của TensorFlow đƣợc đƣa ra trực tiếp là nhờ vào framework cốt lõi của nó: Tensor. Trong TensorFlow, tất cả các tính toán đều liên quan tới các tensor. 1 tensor là 1 vector hay ma trận của n-chiều không gian đại diện cho tất cả loại dữ liệu. Tất cả giá trị trong 1 tensor chứa đựng loại dữ liệu giống hệt nhau với 1 shape đã biết (hoặc đã biết 1 phần). Shape của dữ liệu chính là chiều của ma trận hay mảng. 1 tensor có thể đƣợc bắt nguồn từ dữ liệu input hay kết quả của 1 tính toán. Trong TensorFlow, tất cả các hoạt

33 động đƣợc tiến hành bên trong 1 graph – biểu đồ. Biểu đồ là 1 tập hợp tính toán đƣợc diễn ra liên tiếp. Mỗi operation đƣợc gọi là 1 node (operation node) và đƣợc kết nối với nhau.

Biểu đồ phát thảo các operation và kết nối giữa các node. Tuy nhiên, nó không hiển thị các giá trị. Phần edge của các node chính là tensor, 1 cách để nhập operation với dữ liệu.

2.4.3.2. Graph

TensorFlow sử dụng framework dạng biểu đồ. Biểu đồ tập hợp và mô tả tất cả các chuỗi tính toán đƣợc thực hiện trong quá trình training. Biểu đồ cũng mang rất nhiều lợi thế:

 Nó đƣợc làm ra để chạy trên nhiều CPU hay GPU, ngay cả các hệ điều hành trên thiết bị điện thoại.

 Tính di động của biểu đồ cho phép bảo toàn các tính toán để bạn sử dụng ngay hay sau đó. Biểu đồ có thể đƣợc lƣu lại để thực thi trong tƣơng lai.

 Tất cả tính toán trong biểu đồ đƣợc thực hiện bằng cách kết nối các tensor lại với nhau. 1 tensor có 1 node và 1 edge. Node mang operation toán học và sản xuất các output ở đầu cuối. Các edge giải thích mối quan hệ input/output giữa các node.

2.5. Tìm hiểu về Scikit-learn 2.5.1. Khái niệm Scikit-learn

Scikit-learn (Sklearn) là thƣ viện mạnh mẽ nhất dành cho các thuật toán học máy đƣợc viết trên ngôn ngữ Python. Thƣ viện cung cấp một tập các công cụ xử lý các bài toán machine learning và statistical modeling gồm: classification, regression, clustering, và dimensionality reduction.

2.5.2. Cách thức hoạt động

Để cài đặt scikit-learn trƣớc tiên phải cài thƣ viện SciPy (Scientific Python). Những thành phần gồm:

Numpy: Gói thƣ viện xử lý dãy số và ma trận nhiều chiều

SciPy: Gói các hàm tính toán logic khoa học

Matplotlib: Biểu diễn dữ liệu dƣới dạng đồ thị 2 chiều, 3 chiều

IPython: Notebook dùng để tƣơng tác trực quan với Python

34

Pandas: Xử lý, phân tích dữ liệu dƣới dạng bảng

Những thƣ viện mở rộng của SciPy thƣờng đƣợc đặt tên dạng SciKits. Nhƣ thƣ viện này là gói các lớp, hàm sử dụng trong thuật toán học máy thì đƣợc đặt tên là scikit-learn.

Scikit-learn hỗ trợ mạnh mẽ trong việc xây dựng các sản phẩm. Nghĩa là thƣ viện này tập trung sâu trong việc xây dựng các yếu tố: dễ sử dụng, dễ code, dễ tham khảo, dễ làm việc, hiệu quả cao.

Mặc dù đƣợc viết cho Python nhƣng thực ra các thƣ viện nền tảng của scikit-learn lại đƣợc viết dƣới các thƣ viện của C để tăng hiệu suất làm việc. Ví dụ nhƣ: Numpy(Tính toán ma trận), LAPACK, LibSVM và Cython.

2.5.3. Nhóm thuật toán Scikit-learn

Thƣ viện tập trung vào việc mô hình hóa dữ liệu. Nó không tập trung vào việc truyền tải dữ liệu, biến đổi hay tổng hợp dữ liệu. Những công việc này dành cho thƣ viện Numpy và Pandas.

35 Hình 2. 14. Hình minh họa nhóm thuật toán phân cụm dữ liệu.

Sau đâu là một số nhóm thuật toán đƣợc xây dựng bởi thƣ viện scikit-learn:

Clustering: Nhóm thuật toán Phân cụm dữ liệu không gán nhãn. Ví dụ thuật toán

KMeans

Cross Validation: Kiểm thử chéo, đánh giá độ hiệu quả của thuật toán học giám

sát sử dụng dữ liệu kiểm thử (validation data) trong quá trình huấn luyện mô hình.

Datasets: Gồm nhóm các Bộ dữ liệu đƣợc tích hợp sẵn trong thƣ viện. Hầu nhƣ

các bộ dữ liệu đều đã đƣợc chuẩn hóa và mang lại hiêu suất cao trong quá trình huấn luyện nhƣ iris, digit, ...

Dimensionality Reduction: Mục đích của thuật toán này là để Giảm số lƣợng

thuộc tính quan trọng của dữ liệu bằng các phƣơng pháp nhƣ tổng hợp, biểu diễn dữ liệu và lựa chọn đặc trƣng. Ví dụ thuật toán PCA (Principal component analysis).

Ensemble methods: Các Phƣơng pháp tập hợp sử dụng nhiều thuật toán học tập

để có đƣợc hiệu suất dự đoán tốt hơn so với bất kỳ thuật toán học cấu thành nào.

Feature extraction: Trích xuất đặc trƣng. Mục đích là để định nghĩa các thuộc

36

Feature selection: Trích chọn đặc trƣng. Lựa chọn các đặc trƣng có ý nghĩa trong

việc huấn luyện mô hình học giám sát.

Parameter Tuning: Tinh chỉnh tham số. Các thuật toán phục vụ việc lựa chọn

tham số phù hợp để tối ƣu hóa mô hình.

Manifold Learning: Các thuật toán học tổng hợp và Phân tích dữ liệu đa

chiều phức tạp.

Supervised Models: Học giám sát. Mảng lớn các thuật toán học máy hiện nay. Ví

dụ nhƣ linear models, discriminate analysis, naive bayes, lazy methods, neural networks, support vector machines và decision trees.

2.6. Tìm hiểu về keras 2.6.1 Khái niệm Keras 2.6.1 Khái niệm Keras

Keras là một library đƣợc phát triển vào năm 2015 bởi François Chollet, là một kỹ sƣ nghiên cứu deep learning tại google. Nó là một open source cho neural network đƣợc viết bởi ngôn ngữ python. keras là một API bậc cao có thể sử dụng chung với các thƣ viện deep learning nổi tiếng nhƣ tensorflow(đƣợc phát triển bởi gg), CNTK(đƣợc phát triển bởi microsoft),theano(ngƣời phát triển chính Yoshua Bengio). keras có một số ƣu điểm nhƣ :

 Dễ sử dụng,xây dựng model nhanh.  Có thể run trên cả cpu và gpu

 Hỗ trợ xây dựng CNN , RNN và có thể kết hợp cả 2.  Keras ƣu tiên trải nghiệm của ngƣời lập trình.

 Keras đã đƣợc sử dụng rộng rãi trong doanh nghiệp và cộng đồng nghiên cứu.  Keras giúp dễ dàng biến các thiết kế thành sản phẩm.

 Keras hỗ trợ đa backend engines và không giới hạn bạn vào một hệ sinh thái. Cách cài đặt :

 Trƣớc khi cài đặt keras bạn phải cài đặt một trong số các thƣ viện sau tensorflow,CNTK,theano. Sau đó bạn có thể cài đặt bằng 1 số lệnh sau đối với window:

o pip install keras o conda install keras

37

2.6.2 Cấu trúc của Keras

Cấu trúc của keras chúng ta có thể chia ra thành 3 phần chính :

Hình 2. 15. Cấu trúc của keras. Đầu tiên là các moudule dùng để xây dựng bộ xƣơng cho model:

Hình 2. 16. Cấu trúc xây dựng bộ xƣơng cho model keras.

2.6.2.1 Đầu tiên ta tìm hiểu sub-module : Models trong keras.

Để khởi tạo một model trong keras ta có thể dùng 2 cách:

Thông qua Sequential nhƣ ví dụ dƣới. Chúng ta khởi tạo model bằng Sequential sau đó dùng method add để thêm các layer.

38 Khi chúng ta khởi tạo một model thì có các method ta cần lƣu ý là :

o compile : Sau khi build model xong thì compile nó có tác dụng biên tập lại toàn bộ model của chúng ta đã build. Ở đây chúng ta có thể chọn các tham số để training model nhƣ : thuật toán training thông qua tham số optimizer, function loss của model chúng ta có thể sử dụng mặc định hoặc tự build thông qua tham số loss, chọn metrics hiện thị khi model đƣợc training o summary method này giúp chúng ta tổng hợp lại model xem model có bao

nhiêu layer, tổng số tham số bao nhiêu,shape của mỗi layer..

o fit dùng để đƣa data vào training để tìm tham số model(tƣơng tự nhƣ sklearn)

o predict dùng để predict các new instance o evaluate để tính toán độ chính xác của model

o history dùng để xem accuracy,loss qua từng epochs . Thƣờng dùng với matplotlib để vẽ chart.

2.6.2.2 Tiếp theo chúng ta tìm hiểu đến sub-module Layers

Nó chứa các layers chuyên dụng để ta build các model nhƣ CNN,RNN,GANs..Có rất nhiều layers nên ta chỉ quan tâm đến một số layer thƣờng sử dụng.

39 Hình 2. 17. Các layer thƣờng sử dụng build các model.

 Core layer : chứa các layer mà hầu nhƣ model nào cũng sử dụng đến nó.

o Dense layer này sử dụng nhƣ một layer neural network bình thƣờng. Các tham số quan tâm.

 units chiều output

 activation dùng để chọn activation.

 input_dim chiều input nếu là layer đầu tiên  use_bias có sử dụng bias ko,true or false

 kernel_initializer khởi tạo giá trị đầu cho tham số trong layer trừ bias  bias_initializer khởi tạo giá trị đầu cho bias

 kernel_regularizer regularizer cho coeff  bias_regularizer regularizer cho bias

 activity_regularizer có sử dụng regularizer cho output ko  kernel_constraint,bias_constraint có ràng buộc về weight ko

o Activation dùng để chọn activation trong layer(có thể dùng tham số activation thay thế).

o Dropout layer này dùng nhƣ regularization cho các layer hạn chế overfiting. Tham số cần chú ý :

 rate tỉ lệ dropout

 noise_shape cái này chƣa tìm hiểu  seed random seed bình thƣờng

40 o Flatten dùng để làm phằng layer để fully connection, vd : shape : 20x20 qua

layer này sẽ là 400x1

o Input layer này sử dụng input nhƣ 1 layer nhƣ vd trƣớc ta đã nói. o Reshape giống nhƣ tên gọi của nó, dùng để reshape

o Lambda dùng nhƣ lambda trong python thôi ha

 Convolutional Layers: chứa các layer trong mạng nơ-ron tích chập

o Conv1D,Conv2D là convolution layer dùng để lấy feature từ image. tham số cần chú ý:

 filters số filter của convolution layer  kernel_size size window search trên image  strides bƣớc nhảy mỗi window search  padding same là dùng padding,valid là ko  data_format format channel ở đầu hay cuối

o UpSampling1D,UpSampling2D Ngƣợc lại với convolution layer  size vd (2,2) có nghĩa mỗi pixel ban đầu sẽ thành 4 pixel o ZeroPadding1D,ZeroPadding2D dùng để padding trên image.

 padding số pixel padding

 Pooling Layers : Chứa các layer dùng trong mạng CNN.

o MaxPooling1D,MaxPooling2D dùng để lấy feature nổi bật(dùng max) và giúp giảm parameter khi training

 pool_size size pooling

o AveragePooling1D,AveragePooling2D giống nhƣ maxpooling nhƣng dùng Average

o GlobalMaxPooling1D,GlobalMaxPooling2D chƣa dùng bao giờ nên chƣa hiểu nó làm gì

 Recurrent Layers chứa các layers dùng trong mạng RNN o RNN layer RNN cơ bản

41 o LSTM Long Short-Term Memory layer

 Embedding layer : Embedding dùng trong nhiều trong nlp mục đích embbding sang một không gian mới có chiều nhỏ hơn, và dc learning from data thay cho one-hot lad hard code.

o input_dim size của vocabulary o output_dim size của word embbding o input_length chiều dài mỗi sequence

 Merge Layers : chứa các layers giúp chúng ta cộng,trừ,hoặc nối các layer nhƣ các vector vậy

o Add cộng các layers o Subtracttrừ các layers o Multiplynhân các layer

o Average tính trung bình các layers o Maximum lấy maximun giữa các layers o Concatenate nối các layer

o Dot Nhân matrix giữ 2 layers

 Own Keras layers : Giúp chúng ta có thể xây dựng layer nhƣ theo ý muốn, gồm 3 method chúng ta cần chú ý là build,call và compute_output_shape

42

2.6.2.3 Tiếp theo chúng ta tìm hiểu đến tiền xử lí dữ liệu trong Keras

Tiền xử lí dữ liệu trong Keras đƣợc chia ra làm 3 phần:

 Sequence Preprocessing tiền xử lý chuỗi .

o TimeseriesGenerator cái này dùng để tạo dữ liệu cho time series o pad_sequences dùng để padding giúp các chuỗi có độ dài bằng nhau

o skipgrams tạo data trong model skip gram,kết quả trả về 2 tuple nếu word xuất hiện cùng nhau là 1 nếu ko là 0.

 Text Preprocessing tiền xử lý text

o Tokenizer giống kỹ thuật tokenizer là việc áp dụng các kĩ thuật máy tính để giúp máy tính giao lƣu với con ngƣời qua ngôn ngữ tự nhiên. Tạo tokenizer từ documment

o one_hot tạo data dạng one hot encoding

o text_to_word_sequence covert text thành sequence

 Image Preprocessing tiền xử lý image

o ImageDataGenerator tạo thêm data bằng cách scale,rotation…

Các function trong bộ xƣơng của model

 Các hàm loss functions thƣờng dùng :

o mean_squared_error thƣờng dùng trong regression tính theo eculic o mean_absolute_error tính theo trị tuyệt đối

o categorical_crossentropy dùng trong classifier nhiều class o binary_crossentropy dùng trong classifier 2 class

o kullback_leibler_divergence dùng để tính loss giữa phân phối thực tế và

Một phần của tài liệu Tìm hiểu mạng Generative Adversarial Networks (GANs) trong deep learning, áp dụng vào phân loại bệnh Phổi dựa trên ảnh Xray (Trang 31)

Tải bản đầy đủ (PDF)

(69 trang)