TensorFlow là gì? Vai trò của TensorFlow trong sự phát triển của học máy
TensorFlow là công cụ được đa số lập trình viên sử dụng trong lĩnh vực Machine learning (Học máy). Nếu bạn muốn tìm hiểu chi tiết về TensorFlow, thì nhất định không nên bỏ qua bài viết dưới đây của Bizfly Cloud về TensorFlow cũng như vai trò trong sự phát triển của học máy.
Tensorflow là gì?
TensorFlow là một thư viện mã nguồn mở end-to-end được tạo ra chủ yếu dành cho các ứng dụng Học máy. Nó là một thư viện toán học ký hiệu sử dụng luồng dữ liệu và lập trình có thể phân biệt để thực hiện các nhiệm vụ khác nhau, tập trung vào đào tạo và suy luận các mạng nơ-ron sâu (deep neural network). Nó cho phép các nhà phát triển tạo các ứng dụng học máy bằng cách sử dụng các công cụ, thư viện và tài nguyên cộng đồng khác nhau.
Hiện tại, thư viện học sâu nổi tiếng nhất trên thế giới là TensorFlow của Google. Sản phẩm của Google sử dụng công nghệ máy học trong tất cả các sản phẩm của mình để cải thiện công cụ tìm kiếm, bản dịch, chú thích hình ảnh hoặc các đề xuất.
Để đưa ra một ví dụ cụ thể, người dùng Google có thể trải nghiệm tìm kiếm nhanh hơn và tinh tế hơn với AI. Nếu người dùng nhập từ khóa vào thanh tìm kiếm, Google sẽ đưa ra các đề xuất về từ tiếp theo có thể là từ khóa nào (hay nói cách khác chính là các từ khóa liên quan).
Google muốn sử dụng công nghệ máy học để tận dụng bộ dữ liệu khổng lồ của họ nhằm mang đến cho người dùng trải nghiệm tốt nhất. Ba nhóm người dùng phổ biến sử dụng công nghệ máy học đó là:
- Các nhà nghiên cứu
- Các nhà khoa học dữ liệu
- Lập trình viên
Tất cả họ đều có thể sử dụng cùng một bộ công cụ để cộng tác với nhau và nâng cao hiệu quả làm việc.
Google không chỉ có dữ liệu; họ có máy tính lớn nhất thế giới, vì vậy Tensorflow được họ xây dựng để mở rộng quy mô. TensorFlow là một thư viện do Nhóm Google Brain phát triển để tăng tốc công nghệ học máy và nghiên cứu mạng nơ-ron sâu.
Nó được xây dựng để chạy trên nhiều CPU hoặc GPU và thậm chí cả hệ điều hành di động, và nó có một số trình bao bọc (wrapper) bằng một số ngôn ngữ như Python, C ++ hoặc Java.
Lịch sử của TensorFlow
Một vài năm trước, deep learning bắt đầu nổi lên và vượt trội hơn tất cả các thuật toán học máy khác khi cung cấp một lượng lớn dữ liệu. Google thấy rằng họ có thể sử dụng các mạng nơ-ron sâu này để cải thiện các dịch vụ của mình, bao gồm
Gmail
Google Photos
Google Search Engine
Họ xây dựng một khuôn khổ có tên là Tensorflow để cho phép các nhà nghiên cứu và nhà phát triển làm việc cùng nhau trên một mô hình AI. Sau khi được phát triển và mở rộng, TensorFlow đã mở rộng ra cho nhiều người sử dụng hơn.
Phiên bản thử nghiệm của TensorFlow được công bố lần đầu tiên vào cuối năm 2015, và đi vào ổn định hơn với phiên bản năm 2017. Nó là mã nguồn mở theo giấy phép Nguồn mở Apache. Bạn có thể sử dụng nó, sửa đổi nó và phân phối lại phiên bản đã sửa đổi với một khoản phí mà không phải trả bất cứ thứ gì cho Google.
Cách hoạt động của TensorFlow
TensorFlow cho phép bạn xây dựng biểu đồ và cấu trúc luồng dữ liệu để xác định cách dữ liệu di chuyển qua biểu đồ bằng cách lấy đầu vào là một mảng đa chiều được gọi là Tensor. Nó cho phép bạn xây dựng một sơ đồ các hoạt động có thể được thực hiện trên các đầu vào này, đi ở một đầu và đến ở đầu kia là đầu ra.
Kiến trúc TensorFlow
Kiến trúc Tensorflow hoạt động trong ba phần:
Xử lý trước dữ liệu
Xây dựng mô hình
Đào tạo và ước tính mô hình
Nó được gọi là Tensorflow vì nó nhận đầu vào là một mảng đa chiều, còn được gọi là tensor. Bạn có thể xây dựng một loại lưu đồ (flowchart - lưu đồ hay còn gọi là sơ đồ quy trình) hoạt động (được gọi là Graph) mà bạn muốn thực hiện trên đầu vào đó. Đầu vào đi vào một đầu, và sau đó nó chảy qua hệ thống gồm nhiều hoạt động này và đi ra đầu kia dưới dạng đầu ra.
Đây là lý do tại sao nó được gọi là TensorFlow bởi vì tensor đi trong nó chảy qua một danh sách các hoạt động, và sau đó nó đi ra phía bên kia.
Tensorflow có thể chạy ở đâu?
Yêu cầu về phần cứng và phần mềm của TensorFlow có thể được phân loại thành:
Giai đoạn Phát triển: Đây là khi bạn đào tạo mô hình. Việc đào tạo thường được thực hiện trên Desktop hoặc laptop.
Giai đoạn Chạy hoặc Giai đoạn Suy luận: Sau khi đào tạo xong, Tensorflow có thể được chạy trên nhiều nền tảng khác nhau. Bạn có thể chạy nó trên
- Desktop chạy Windows, macOS hoặc Linux
- Cloud dưới dạng dịch vụ web
- Các thiết bị di động như iOS và Android
Bạn có thể đào tạo nó trên nhiều máy, sau đó chạy nó trên một máy khác sau khi đã có mô hình được đào tạo.
Mô hình có thể được đào tạo và sử dụng trên GPU cũng như CPU. GPU ban đầu được thiết kế cho trò chơi điện tử. Vào cuối năm 2010, các nhà nghiên cứu tại Stanford đã phát hiện ra rằng GPU cũng rất giỏi trong các phép toán ma trận và đại số, do đó nó giúp chúng thực hiện các loại tính toán này rất nhanh. Học sâu dựa trên rất nhiều phép nhân ma trận. TensorFlow tính toán phép nhân ma trận rất nhanh vì nó được viết bằng C ++. Ngoài ra, TensorFlow cũng có thể được truy cập và điều khiển bởi các ngôn ngữ khác, chủ yếu là Python.
Cuối cùng, một tính năng quan trọng của TensorFlow là TensorBoard. TensorBoard cho phép người dùng có thể theo dõi những gì TensorFlow đang làm một cách trực quan và sinh động nhất dựa trên đồ họa.
Giới thiệu về các thành phần của TensorFlow
Tensor
Tên của Tensorflow có nguồn gốc trực tiếp từ khung cốt lõi của nó: Tensor. Trong Tensorflow, tất cả các phép tính liên quan đến các tensor. Một tensor là một vectơ hoặc ma trận có n chiều đại diện cho tất cả các loại dữ liệu. Tất cả các giá trị trong một tensor giữ kiểu dữ liệu giống hệt nhau với hình dạng đã biết (hoặc đã biết một phần). Hình dạng của dữ liệu là kích thước của ma trận hoặc mảng.
Một tensor có thể được bắt nguồn từ dữ liệu đầu vào hoặc kết quả của một phép tính. Trong TensorFlow, tất cả các hoạt động được tiến hành bên trong một biểu đồ (graph) . Biểu đồ là một tập hợp các phép tính diễn ra liên tiếp. Mỗi thao tác được gọi là một nút op (op node) và được kết nối với nhau.
Biểu đồ phác thảo các hoạt động và kết nối giữa các nút. Tuy nhiên, nó không hiển thị các giá trị. Cạnh của các nút là tensor, tức là, một cách để điền hoạt động với dữ liệu.
Graphs (Đồ thị)
TensorFlow sử dụng khung đồ thị. Đồ thị tập hợp và mô tả tất cả các phép tính chuỗi được thực hiện trong quá trình đào tạo. Đồ thị có rất nhiều ưu điểm:
Nó đã được thực hiện để chạy trên nhiều CPU hoặc GPU và thậm chí cả hệ điều hành di động
Tính di động của đồ thị cho phép duy trì các tính toán để sử dụng ngay lập tức hoặc sau này. Đồ thị có thể lưu lại được để thực hiện các nhiệm vụ trong tương lai.
Tất cả các tính toán trong biểu đồ được thực hiện bằng cách kết nối các tensor với nhau
Một tensor có một nút và một cạnh. Nút thực hiện phép toán và tạo ra kết quả đầu cuối. Các cạnh giải thích các mối quan hệ đầu vào / đầu ra giữa các nút.
Ưu điểm của TensorFlow là gì?
Một số ưu điểm nổi bật của TensorFlow có thể kể đến như:
Khả năng phân tích tổng quan
Một trong những lợi ích lớn nhất của TensorFlow là khả năng phân tích tổng quan abstraction. Quy trình phát triển phần mềm bao gồm nhiều công đoạn khác nhau. Để chương trình chạy ổn định, sự tỉ mỉ, chi tiết cần được đặt lên hàng đầu để không xảy ra lỗi hệ thống.
Chính vì vậy, TensorFlow được xem như một công cụ hữu ích mang đến góc nhìn tổng quan cho người dùng. Những công đoạn nhỏ như triển khai thuật toán hoặc chuyển input thành output và ngược lại, đều được TensorFlow xử lý tự động và nhanh chóng. Nhờ đó, người dùng có thể giảm bớt được khối lượng công việc và tập trung cho việc phát triển tính logic tổng thể của ứng dụng.
Dễ dàng chỉnh sửa định hướng
Với tính năng Eager execution, TensorFlow cho phép người dùng dễ dàng chỉnh sửa trực tiếp các operation trong biểu đồ hướng xử lý dữ liệu, thay vì phải khởi tạo lại biểu đồ. Từ đó tiết kiệm được rất nhiều thời gian và công sức cho người dùng. Người dùng cũng có thể để lại đánh giá và cài đặt bổ sung các tính năng cho Tensorflow để phục vụ cho những lần làm việc tiếp theo được hiệu quả hơn.
Ngoài ra, bạn cũng có thể dễ dàng tìm và phát hiện lỗi bằng tính năng TensorBoard. Công cụ này giúp người dùng quan sát trực tiếp quy trình làm việc của TensorFlow, từ đó phát hiện ra những sai sót trong quy trình vận hành để có thể kịp thời chỉnh sửa.
Được phát triển dựa trên nền tảng Google
Được phát triển bởi một trong những công ty công nghệ hàng đầu thế giới Google, TensorFlow được cải tiến và cập nhật thường xuyên để phù hợp hơn với xu hướng hiện đại. Những phần mềm hỗ trợ phát triển cho TensorFlow cũng rất đa dạng. Chẳng hạn như, người dùng có thể tăng tốc độ đám mây bằng cách sử dụng silicon TPU hoặc chia sẻ các model mới cho framework thông qua kênh online hub.
Những công cụ khi sử dụng TensorFlow
Dưới đây là những công cụ phổ biến khi sử dụng TensorFlow:
DeepDream
DeepDream là ứng dụng hoạt động dựa trên nền tảng của TensorFlow, có khả năng tự động tạo phụ đề cho hình ảnh. Công cụ này sử dụng mạng nơ-ron phức hợp để tìm kiếm và cải tiến những vật thể có trong hình ảnh thông qua các thuật toán được lấy cảm hứng dự trên ảo giác trong giấc mơ.
RankBrain
RankBrain là sản phẩm của Google được phát triển dựa trên TensorFlow. Công cụ này có thể xử lý một lượng truy vấn tìm kiếm khổng lồ, đồng thời bổ sung và thay thế các thuật toán truyền thống.
Tại sao TensorFlow lại phổ biến?
TensorFlow là thư viện tốt nhất vì nó được xây dựng để mọi người có thể truy cập được. Thư viện Tensorflow kết hợp các API khác nhau để xây dựng kiến trúc học sâu ở quy mô lớn như CNN hoặc RNN. TensorFlow dựa trên tính toán đồ thị; nó cho phép nhà phát triển trực quan hóa việc xây dựng mạng nơ-ron với Tensorboad. Công cụ này rất hữu ích để gỡ lỗi chương trình. Cuối cùng, Tensorflow được xây dựng để triển khai trên quy mô lớn. Nó chạy trên CPU và GPU.
Tensorflow nổi tiếng hơn bất kỳ các khung học sâu nào khác trên GitHub.
Ví dụ đơn giản về TensorFlow
nhập numpy dưới dạng np
nhập tensorflow dưới dạng tf
Trong hai dòng mã đầu tiên, bạn có thể thấy tensorflow được nhập dưới dạng tf. Với ngôn ngữ Python, việc sử dụng tên viết tắt cho thư viện là một thói quen phổ biến. Ưu điểm là tránh phải gõ tên đầy đủ của thư viện khi chúng ta cần sử dụng. Trong phần này, chúng ta sẽ thử thực hành quy trình làm việc cơ bản của Tensorflow với các ví dụ TensorFlow đơn giản. Hãy tạo một đồ thị tính toán nhân hai số với nhau.
Giả sử 2 số đó là X_1 và X_2. Tensorflow sẽ tạo một nút để kết nối hoạt động, nút này sẽ là dấu nhân trong ví dụ này. Khi đồ thị được xác định, các công cụ tính toán Tensorflow sẽ nhân X_1 và X_2 với nhau.
Cuối cùng, chúng tôi sẽ chạy một phiên TensorFlow để chạy biểu đồ tính toán với các giá trị của X_1 và X_2 và in kết quả của phép nhân.
Coi X_1 và X_2 là nút đầu vào. Khi chúng ta tạo một nút trong Tensorflow, chúng ta phải chọn loại nút để tạo. Các nút X1 và X2 sẽ là một nút giữ chỗ. Trình giữ chỗ chỉ định một giá trị mới mỗi khi chúng ta thực hiện một phép tính. Chúng ta sẽ tạo chúng dưới dạng nút giữ chỗ chấm TF.
Bước 1: Xác định biến
X_1 = tf.placeholder (tf.float32, name = "X_1")
X_2 = tf.placeholder (tf.float32, name = "X_2")
Khi chúng ta tạo một nút giữ chỗ, chúng ta cũng cần đặt tên cho nút này. Tên này sẽ hiển thị khi chúng ta nhìn vào hình ảnh đồ họa của mô hình. Hãy đặt tên cho nút này là X_1 bằng cách chuyển vào một tham số được gọi là tên với giá trị là X_1 và X_2 cũng làm tương tự như vậy.
Bước 2: Xác định tính toán
nhân = tf.multiply (X_1, X_2, name = "nhân")
Bây giờ chúng ta có thể xác định nút thực hiện phép nhân. Trong Tensorflow, chúng ta có thể làm điều đó bằng cách tạo một nút tf.multiply.
Bước 3: Thực hiện thao tác
Để thực hiện các hoạt động trong biểu đồ, chúng ta phải tạo một phiên. Trong Tensorflow, nó được thực hiện bởi tf.Session (). Khi đã có một phiên, chúng ta có thể yêu cầu phiên chạy các hoạt động trên đồ thị tính toán bằng cách gọi phiên. Để chạy tính toán, chúng ta cần sử dụng run và cung cấp các giá trị cho X_1 và X_2. Làm điều này bằng cách cung cấp một tham số được gọi là feed_dict. Chúng ta sẽ chuyển giá trị 1,2,3 cho X_1 và 4,5,6 cho X_2. Kết quả sẽ hiển thị như bên dưới đây:
X_1 = tf.placeholder (tf.float32, name = "X_1")
X_2 = tf.placeholder (tf.float32, name = "X_2")
nhân = tf.multiply (X_1, X_2, name = "nhân")
với tf.Session () là phiên:
result = session.run (nhân, feed_dict = {X_1: [1,2,3], X_2: [4,5,6]})
in (kết quả)
[4. 10. 18.]
Tổng kết
Vậy là chúng ta đã cùng nhau đi tìm hiểu sâu về thư viện học sâu nổi tiếng nhất những năm gần đây - TensorFlow. Một học viên có thể hiểu TensorFlow là gì có thể sử dụng TensorFlow để xây dựng bất kỳ cấu trúc học sâu nào, như CNN, RNN hoặc mạng nơ-ron nhân tạo đơn giản. TensorFlow chủ yếu được sử dụng bởi các nhà khoa học, công ty khởi nghiệp và các công ty lớn. Google sử dụng TensorFlow trong hầu hết các sản phẩm hàng ngày của Google bao gồm Gmail, Photo và Google Search Engine. Việc nắm vững TensorFlow là gì sẽ giúp ích rất nhiều cho bạn trong các công việc liên quan đến học máy sau này.