Yolo Tầm nhìn Thâm Quyến
Thâm Quyến
Tham gia ngay
Bảng chú giải thuật ngữ

Tanh (Tiếp tuyến Hyperbol)

Khám phá cách thức hoạt động của hàm kích hoạt Tanh trong học sâu. Tìm hiểu lý do tại sao phạm vi tập trung về 0 của nó cải thiện hiệu quả huấn luyện trong RNN và GAN. Ultralytics .

Hàm Tanh (Hyperbolic Tangent) là một hàm kích hoạt toán học được sử dụng rộng rãi trong các lớp ẩn của mạng nơ-ron nhân tạo. Nó biến đổi các giá trị đầu vào thành một phạm vi đầu ra từ -1 đến 1, tạo ra một đường cong hình chữ S tương tự như hàm sigmoid nhưng có tâm tại số 0. Thuộc tính có tâm tại số 0 này rất quan trọng vì nó cho phép mô hình học hiệu quả hơn bằng cách chuẩn hóa đầu ra của các nơ-ron, đảm bảo rằng dữ liệu truyền qua mạng có giá trị trung bình gần bằng 0 hơn. Bằng cách xử lý các giá trị âm một cách rõ ràng, hàm Tanh giúp mạng nơ-ron nắm bắt được các mẫu và mối quan hệ phức tạp hơn trong dữ liệu.

Cơ chế của hàm Tanh trong học sâu

Trong kiến ​​trúc của các mô hình học sâu, hàm kích hoạt đưa vào tính phi tuyến tính, cho phép mạng học được các ranh giới phức tạp giữa các lớp dữ liệu khác nhau. Nếu không có các hàm như Tanh, một mạng nơ-ron sẽ hoạt động như một mô hình hồi quy tuyến tính đơn giản, bất kể nó có bao nhiêu lớp. Hàm Tanh đặc biệt hiệu quả trong mạng nơ-ron hồi quy (RNN) và một số loại mạng truyền thẳng, nơi việc duy trì phân bố kích hoạt cân bằng, tập trung ở điểm 0 giúp ngăn ngừa vấn đề suy giảm độ dốc trong quá trình lan truyền ngược .

Khi các giá trị đầu vào được ánh xạ vào phạm vi từ -1 đến 1, các giá trị đầu vào âm mạnh sẽ dẫn đến các giá trị đầu ra âm, và các giá trị đầu vào dương mạnh sẽ dẫn đến các giá trị đầu ra dương. Điều này khác với hàm Sigmoid , hàm này nén các giá trị giữa 0 và 1. Bởi vì đầu ra của hàm Tanh đối xứng quanh điểm 0, quá trình giảm độ dốc thường hội tụ nhanh hơn, vì các trọng số trong các lớp tiếp theo không di chuyển nhất quán theo một hướng duy nhất (một hiện tượng được gọi là đường dẫn "zig-zag" trong tối ưu hóa).

Các Ứng dụng Thực tế

Tanh tiếp tục đóng vai trò quan trọng trong các kiến ​​trúc và trường hợp sử dụng cụ thể, đặc biệt là khi cần xử lý chuỗi và ước tính giá trị liên tục.

  • Xử lý ngôn ngữ tự nhiên (NLP): Trong các kiến ​​trúc như mạng Long Short-Term Memory (LSTM) và Gated Recurrent Units (GRU), hàm Tanh được sử dụng làm hàm kích hoạt chính để điều chỉnh luồng thông tin. Ví dụ, trong các tác vụ dịch máy, nơi mô hình dịch văn bản từ... English Trong tiếng Pháp, Tanh giúp các cổng bên trong của LSTM quyết định giữ lại hay quên đi bao nhiêu ngữ cảnh (bộ nhớ) trước đó. Điều này cho phép mô hình xử lý các phụ thuộc dài hạn trong cấu trúc câu.
  • Mạng đối kháng tạo sinh (GAN): Trong thành phần tạo sinh của nhiều mạng đối kháng tạo sinh , hàm Tanh thường được sử dụng làm hàm kích hoạt cuối cùng cho lớp đầu ra. Vì hình ảnh thường được chuẩn hóa về phạm vi từ -1 đến 1 trong quá trình tiền xử lý, việc sử dụng Tanh đảm bảo bộ tạo sinh tạo ra các giá trị pixel nằm trong cùng phạm vi hợp lệ. Kỹ thuật này giúp tổng hợp hình ảnh chân thực cho các ứng dụng như chuyển đổi văn bản thành hình ảnh .

So sánh: Hàm Tanh, hàm Sigmoid và hàm ReLU

Việc phân biệt hàm Tanh với các hàm thông thường khác rất hữu ích để hiểu khi nào nên sử dụng nó.

  • Tanh so với Sigmoid : Cả hai đều là đường cong hình chữ S. Tuy nhiên, Sigmoid cho ra các giá trị nằm giữa 0 và 1, điều này có thể khiến độ dốc biến mất nhanh hơn so với Tanh. Sigmoid thường được dành cho lớp đầu ra cuối cùng của các bài toán phân loại nhị phân (dự đoán xác suất), trong khi Tanh được ưa chuộng hơn cho các lớp ẩn trong mạng RNN.
  • Tanh so với ReLU (Rectified Linear Unit) : Trong các mạng nơron tích chập (CNN) hiện đại như YOLO26 , ReLU và các biến thể của nó (như SiLU ) thường được ưu tiên hơn Tanh cho các lớp ẩn. Điều này là do ReLU tránh được vấn đề suy giảm độ dốc hiệu quả hơn đối với các mạng rất sâu và có chi phí tính toán thấp hơn. Tanh tốn kém hơn về mặt tính toán do các phép tính theo hàm mũ.

Thực hiện các kích hoạt trong PyTorch

Mặc dù các mô hình cấp cao như YOLO26 xử lý các định nghĩa kích hoạt nội bộ trong các tệp cấu hình của chúng, việc hiểu cách áp dụng hàm Tanh bằng PyTorch rất hữu ích cho việc xây dựng mô hình tùy chỉnh.

import torch
import torch.nn as nn

# Define a sample input tensor with positive and negative values
input_data = torch.tensor([-2.0, -0.5, 0.0, 0.5, 2.0])

# Initialize the Tanh activation function
tanh = nn.Tanh()

# Apply Tanh to the input data
output = tanh(input_data)

# Print results to see values squashed between -1 and 1
print(f"Input: {input_data}")
print(f"Output: {output}")

Đối với người dùng quan tâm đến việc huấn luyện các kiến ​​trúc tùy chỉnh hoặc quản lý tập dữ liệu hiệu quả, Nền tảng Ultralytics cung cấp một môi trường được tối ưu hóa để thử nghiệm các siêu tham số mô hình khác nhau, trực quan hóa các chỉ số huấn luyện và triển khai các giải pháp mà không cần phải tự tay lập trình từng lớp của mạng nơ-ron.

Tham gia Ultralytics cộng đồng

Tham gia vào tương lai của AI. Kết nối, hợp tác và phát triển cùng với những nhà đổi mới toàn cầu

Tham gia ngay