Độ chính xác top 1 và top 5 năm 2022

Giới thiệu

ResNet (Residual Network) được giới thiệu đến công chúng vào năm 2015 và thậm chí đã giành được vị trí thứ 1 trong cuộc thi ILSVRC 2015 với tỉ lệ lỗi top 5 chỉ 3.57%. Không những thế nó còn đứng vị trí đầu tiên trong cuộc thi ILSVRC and COCO 2015 với ImageNet Detection, ImageNet localization, Coco detection và Coco segmentation.Hiện tại thì có rất nhiều biến thể của kiến trúc ResNet với số lớp khác nhau như ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-152,...Với tên là ResNet theo sau là một số chỉ kiến trúc ResNet với số lớp nhất định.

Tại sao lại xuất hiện mạng ResNet

Mạng ResNet (R) là một mạng CNN được thiết kế để làm việc với hàng trăm lớp. Một vấn đề xảy ra khi xây dựng mạng CNN với nhiều lớp chập sẽ xảy ra hiện tượng Vanishing Gradient dẫn tới quá trình học tập không tốt.

Vanishing Gradient

Trước hết thì Backpropagation Algorithm là một kỹ thuật thường được sử dụng trong quá trình tranining. Ý tưởng chung của thuật toán lá sẽ đi từ output layer đến input layer và tính toán gradient của cost function tương ứng cho từng parameter (weight) của mạng. Gradient Descent sau đó được sử dụng để cập nhật các parameter đó.

Độ chính xác top 1 và top 5 năm 2022

Toàn bộ quá trình trên sẽ được lặp đi lặp lại cho tới khi mà các parameter của network được hội tụ. Thông thường chúng ta sẽ có một hyperparametr (số Epoch - số lần mà traninig set được duyệt qua một lần và weights được cập nhật) định nghĩa cho số lượng vòng lặp để thực hiện quá trình này. Nếu số lượng vòng lặp quá nhỏ thì ta gặp phải trường hợp mạng có thể sẽ không cho ra kết quả tốt và ngược lại thời gian tranining sẽ lâu nếu số lượng vòng lặp quá lớn.

Độ chính xác top 1 và top 5 năm 2022

Tuy nhiên, trong thực tế Gradients thường sẽ có giá trị nhỏ dần khi đi xuống các layer thấp hơn. Dẫn đến kết quả là các cập nhật thực hiện bởi Gradients Descent không làm thay đổi nhiều weights của các layer đó và làm chúng không thể hội tụ và mạng sẽ không thu được kết quả tốt. Hiện tượng như vậy gọi là Vanishing Gradients.. Chỗ này hơi rối não

Độ chính xác top 1 và top 5 năm 2022
Độ chính xác top 1 và top 5 năm 2022
Độ chính xác top 1 và top 5 năm 2022

===> Mạng ResNet ra đời cũng giải quyết vấn đề đó.

Kiến trúc mạng ResNet

Cho nên giải pháp mà ResNet đưa ra là sử dụng kết nối "tắt" đồng nhất để xuyên qua một hay nhiều lớp. Một khối như vậy được gọi là một Residual Block, như trong hình sau :

Độ chính xác top 1 và top 5 năm 2022

ResNet gần như tương tự với các mạng gồm có convolution, pooling, activation và fully-connected layer. Ảnh bên trên hiển thị khối dư được sử dụng trong mạng. Xuất hiện một mũi tên cong xuất phát từ đầu và kết thúc tại cuối khối dư. Hay nói cách khác là sẽ bổ sung Input X vào đầu ra của layer, hay chính là phép cộng mà ta thấy trong hình minh họa, việc này sẽ chống lại việc đạo hàm bằng 0, do vẫn còn cộng thêm X. Với H(x) là giá trị dự đoán, F(x) là giá trị thật (nhãn), chúng ta muốn H(x) bằng hoặc xấp xỉ F(x). Việc F(x) có được từ x như sau:

X->weight1-> ReLU -> weight2

Giá trị H(x) có được bằng cách:

F(x) + x -> ReLU

Như chúng ta đã biết việc tăng số lượng các lớp trong mạng làm giảm độ chính xác, nhưng muốn có một kiến trúc mạng sâu hơn có thể hoạt động tốt.

Độ chính xác top 1 và top 5 năm 2022

  • Hình 1. VGG-19 là một mô hình CNN sử dụng kernel 3x3 trên toàn bộ mạng, VGG-19 cũng đã giành được ILSVRC năm 2014.
  • Hình 2. ResNet sử dụng các kết nối tắt ( kết nối trực tiếp đầu vào của lớp (n) với (n+x) được hiển thị dạng mũi tên cong. Qua mô hình nó chứng minh được có thể cải thiện hiệu suất trong quá trình training model khi mô hình có hơn 20 lớp.
  • Hình 3. Tổng cộng có 12 đầu ra từ ResNet-152 và VGG-19 đã được sử dụng làm đầu vào cho mạng có 2 lớp hidden. Đầu ra cuối cùng được tính toán thông qua hai lớp ẩn ( hidden). Việc xếp chồng các lớp sẽ không làm giảm hiệu suất mạng.Với kiến trúc này các lớp phía trên có được thông tin trực tiếp hơn từ các lớp dưới nên sẽ điều chỉnh trọng số hiệu quả hơn.

Xây dựng mạng ResNet-50

Hình dưới đây mô tả chi tiết kiến trúc mạng nơ ron ResNet :

Độ chính xác top 1 và top 5 năm 2022

"ID BLOCK" trong hình trên là viết tắt của từ Identity block và ID BLOCK x3 nghĩa là có 3 khối Identity block chồng lên nhau. Nội dung hình trên như sau :

  • Zero-padding : Input với (3,3)
  • Stage 1 : Tích chập (Conv1) với 64 filters với shape(7,7), sử dụng stride (2,2). BatchNorm, MaxPooling (3,3).
  • Stage 2 : Convolutiontal block sử dụng 3 filter với size 64x64x256, f=3, s=1. Có 2 Identity blocks với filter size 64x64x256, f=3.
  • Stage 3 : Convolutional sử dụng 3 filter size 128x128x512, f=3,s=2. Có 3 Identity blocks với filter size 128x128x512, f=3.
  • Stage 4 : Convolutional sử dụng 3 filter size 256x256x1024, f=3,s=2. Có 5 Identity blocks với filter size 256x256x1024, f=3.
  • Stage 5 :Convolutional sử dụng 3 filter size 512x512x2048, f=3,s=2. Có 2 Identity blocks với filter size 512x512x2048, f=3.
  • The 2D Average Pooling : sử dụng với kích thước (2,2).
  • The Flatten.
  • Fully Connected (Dense) : sử dụng softmax activation.

Dưới đây là code mẫu mạng ResNet-50

def ResNet50(input_shape = (64, 64, 3), classes = 6):
    """
    Implementation of the popular ResNet50 the following architecture:
    CONV2D -> BATCHNORM -> RELU -> MAXPOOL -> CONVBLOCK -> IDBLOCK*2 -> CONVBLOCK -> IDBLOCK*3
    -> CONVBLOCK -> IDBLOCK*5 -> CONVBLOCK -> IDBLOCK*2 -> AVGPOOL -> TOPLAYER

    Arguments:
    input_shape -- shape of the images of the dataset
    classes -- integer, number of classes

    Returns:
    model -- a Model() instance in Keras
    """
    
    # Define the input as a tensor with shape input_shape
    X_input = Input(input_shape)

    
    # Zero-Padding
    X = ZeroPadding2D((3, 3))(X_input)
    
    # Stage 1
    X = Conv2D(64, (7, 7), strides = (2, 2), name = 'conv1', kernel_initializer = glorot_uniform(seed=0))(X)
    X = BatchNormalization(axis = 3, name = 'bn_conv1')(X)
    X = Activation('relu')(X)
    X = MaxPooling2D((3, 3), strides=(2, 2))(X)

    # Stage 2
    X = convolutional_block(X, f = 3, filters = [64, 64, 256], stage = 2, block='a', s = 1)
    X = identity_block(X, 3, [64, 64, 256], stage=2, block='b')
    X = identity_block(X, 3, [64, 64, 256], stage=2, block='c')


    # Stage 3 
    X = convolutional_block(X, f = 3, filters = [128, 128, 512], stage = 3, block='a', s = 2)
    X = identity_block(X, 3, [128, 128, 512], stage=3, block='b')
    X = identity_block(X, 3, [128, 128, 512], stage=3, block='c')
    X = identity_block(X, 3, [128, 128, 512], stage=3, block='d')

    # Stage 4 
    X = convolutional_block(X, f = 3, filters = [256, 256, 1024], stage = 4, block='a', s = 2)
    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='b')
    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='c')
    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='d')
    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='e')
    X = identity_block(X, 3, [256, 256, 1024], stage=4, block='f')

    # Stage 5 
    X = convolutional_block(X, f = 3, filters = [512, 512, 2048], stage = 5, block='a', s = 2)
    X = identity_block(X, 3, [512, 512, 2048], stage=5, block='b')
    X = identity_block(X, 3, [512, 512, 2048], stage=5, block='c')

    # AVGPOOL . Use "X = AveragePooling2D(...)(X)"
    X = AveragePooling2D()(X)

    # output layer
    X = Flatten()(X)
    X = Dense(classes, activation='softmax', name='fc' + str(classes), kernel_initializer = glorot_uniform(seed=0))(X)
    
    
    # Create model
    model = Model(inputs = X_input, outputs = X, name='ResNet50')

    return model

Thực tế, ResNet không phải là kiến trúc đầu tiên sử dụng các kết nối tắt, Highway Network là một ví dụ. Trong thử nghiệm cho thấy Highway Network hoạt động không tốt hơn ResNet.Giải pháp ResNet đưa ra đơn giản hơn và tập trung vào cải thiện thông tin thông qua độ dốc của mạng. Sau ResNet hàng loạt biến thể của kiến trúc này được giới thiệu. Thực nghiệm cho thấy những kiến trúc này có thể được huấn luyện mạng nơ ron với độ sâu hàng nghìn lớp và nó nhanh chóng trở thành kiến trúc phổ biến nhất trong Computer Vision.

Hi vọng bài viết này giúp bạn có cái nhìn cơ bản về ResNet. Phần tới chũng ta sẽ implement với tập Dataset xem kết quả sẽ như thế nào nhé.

Tài liệu tham khảo

  1. https://missinglink.ai/guides/keras/keras-resnet-building-training-scaling-residual-nets-keras/
  2. https://towardsdatascience.com/introduction-to-resnets-c0a830a288a4
  3. https://arxiv.org/pdf/1512.03385.pdf
  4. https://towardsdatascience.com/an-overview-of-resnet-and-its-variants-5281e2f56035

Thông thường, trong khi xây dựng các mô hình học máy, chúng tôi tập trung vào các số liệu chính xác, cố gắng có được lớp phù hợp của một hình ảnh hoặc đúng danh mục cho một đoạn văn bản. Nhưng các nhiệm vụ này, nếu chỉ được đo dựa trên độ chính xác của dự đoán xác suất cao nhất giới hạn sự hiểu biết của chúng tôi về mạng và giới hạn các khu vực có thể được áp dụng.

Trước khi vào các chi tiết, hãy để xác định hai thuật ngữ trước.

Độ chính xác hàng đầu - như tên cho thấy, trong vấn đề phân loại hình ảnh, bạn trích xuất giá trị tối đa ra khỏi đầu ra SoftMax cuối cùng của bạn - giá trị tương ứng với độ tin cậy cho lớp dự đoán cho đầu vào của bạn. — As the name suggests, in an image classification problem, you extract the maximum value out of your final softmax outputs — the value that corresponds to the confidence for the predicted class for your input.

Độ chính xác hàng đầu - Độ chính xác hàng đầu là khi bạn đo được tần suất lớp dự đoán của bạn rơi vào giá trị N trên cùng của phân phối SoftMax của bạn. — Top N accuracy is when you measure how often your predicted class falls in the top N values of your softmax distribution.

Hãy để lấy một ví dụ -

Giả sử bạn có mô hình phân loại hình ảnh với 5 lớp - chó, mèo, hươu cao cổ, chuột và lỗi. Bạn kiểm tra mô hình của bạn trên 5 hình ảnh và nhận kết quả sau.

Ở đây, nhãn dự đoán sẽ đúng 3/5 lần. Nhưng đối với cùng một trường hợp, nhãn thực sự tăng 4/5 lần trong 3 nhãn hàng đầu

Therefore,

Độ chính xác của top1 - 60%

Độ chính xác của Top3 - 80%

Chúng tôi sẽ cố gắng hiểu lý do tại sao bạn có thể cần độ chính xác hàng đầu-N thay vì chỉ độ chính xác của Top1 bằng cách tuân theo trường hợp sử dụng.

Hãy tưởng tượng bạn đang cố gắng xây dựng một hệ thống đề xuất cho ứng dụng thương mại điện tử của bạn. Trước đó, các khuyến nghị chủ yếu sẽ dựa trên các sản phẩm đã phổ biến trong nhiều năm, trong nhiều tháng, trong nhiều ngày. Với sự gia tăng dữ liệu được thu thập bởi các doanh nghiệp, cũng cần phải sử dụng dữ liệu này để các doanh nghiệp có thể tạo ra giá trị từ nó. Công cụ của bạn bây giờ có thể tìm thấy một số đối tượng bạn có thể mua dựa trên một số yếu tố bao gồm hành vi của bạn trong quá khứ, danh mục sản phẩm bạn đã mua trong quá khứ, mức giá của các sản phẩm đó, nhà cung cấp của các sản phẩm đó, v.v.

Thường xuyên hơn không, mọi người cuối cùng sẽ mua không phải đề xuất hàng đầu của bạn mà là thứ gì đó xuất hiện trong danh sách sau và trong một số trường hợp, không xuất hiện trong danh sách. Nghịch lý chính xác xuất hiện ở đây - các mô hình dự đoán có mức độ chính xác nhất định có thể có công suất dự đoán cao hơn so với các mô hình có độ chính xác cao hơn. Một người xem qua một nền tảng thương mại điện tử không tìm kiếm đặt cược tốt nhất đầu tiên mà anh ta có thể chọn. Anh ấy/cô ấy đang tìm kiếm sự đa dạng, mới lạ, bảo hiểm, sự ngẫu nhiên và sự liên quan.

Trong tình huống như vậy, ngoài việc điều chỉnh các thuật toán để tính đến những cách khác nhau mà khách hàng trải nghiệm nền tảng và cách anh ấy/cô ấy tương tác với nó, một số liệu an toàn hơn để đánh giá hiệu suất của mô hình của bạn sẽ là độ chính xác hàng đầu.

Nhận tên miền miễn phí cho năm đầu tiên và xây dựng trang web hoàn toàn mới của bạn

Trong bài viết này, chúng tôi đã giải thích ý tưởng đằng sau độ chính xác của Top5 và cách tính toán nó.

Mục lục::

  1. Giới thiệu về độ chính xác của Top5
  2. Độ chính xác của Top5 được tính toán như thế nào?
  3. Mã để tính toán độ chính xác của Top5
  4. Độ chính xác của top5 so với độ chính xác của top1
  5. Lưu ý kết luận

Pre-requisites:

  • Đánh giá mô hình
  • Mô hình Resnet50
  • Hoạt động mềm

Giới thiệu về độ chính xác của Top5

Độ chính xác của Top5 được tính toán như thế nào?

Mã để tính toán độ chính xác của Top5

(Top1 accuracy, Top5 accuracy)

Độ chính xác của top5 so với độ chính xác của top1

(0.723, 0.902)

Độ chính xác của Top5 được tính toán như thế nào?

Mã để tính toán độ chính xác của Top5

Độ chính xác của top5 so với độ chính xác của top1

Lưu ý kết luận

Đánh giá mô hình

  • Mô hình Resnet50
  • Hoạt động mềm

Độ chính xác của Top5 là một biện pháp để biểu thị tính chính xác của đầu ra của mô hình học máy. Độ chính xác của Top5 thường được sử dụng với nhận dạng hình ảnh, phát hiện đối tượng và nhiều hơn nữa.

[ 0.0003, 1.20007e-10, 4.0025e-9, ..., 0.0001, 7.011e-4]

Độ chính xác của Top5 thường được sử dụng cùng với độ chính xác của Top1 như một tập hợp.

  • Giá trị ví dụ:
  • Một máy học như Resnet50 có hoạt động SoftMax là hoạt động cuối cùng. Các mô hình này được đào tạo trên một bộ dữ liệu có 1000 danh mục như ImageNet.
  • Vì vậy, đầu ra của hoạt động SoftMax hoặc mô hình ML là một mảng có kích thước 1000. Mỗi phần tử là xác suất mà dữ liệu đầu vào thuộc về danh mục hiện tại.
  • Ngoài ra, tổng của tất cả các phần tử trong đầu ra SoftMax bằng 1.

Vì vậy, nếu đầu ra bị tắt [0] [1000], thì:

ra [0] [i] = xác suất mà đầu vào thuộc về danh mục thứ i

Tổng của ra [0] [i] với tất cả i = 1
= 0.74

Một đầu ra mẫu của SoftMax như sau:

Mã để tính toán độ chính xác của Top5

Độ chính xác của top5 so với độ chính xác của top1

  • Lưu ý kết luận
  • Đánh giá mô hình
Mô hình Resnet50

Hoạt động mềm

Độ chính xác của Top5 là một biện pháp để biểu thị tính chính xác của đầu ra của mô hình học máy. Độ chính xác của Top5 thường được sử dụng với nhận dạng hình ảnh, phát hiện đối tượng và nhiều hơn nữa.Top5Top1
Độ chính xác của Top5 thường được sử dụng cùng với độ chính xác của Top1 như một tập hợp.Giá trị ví dụ:Một máy học như Resnet50 có hoạt động SoftMax là hoạt động cuối cùng. Các mô hình này được đào tạo trên một bộ dữ liệu có 1000 danh mục như ImageNet.
Vì vậy, đầu ra của hoạt động SoftMax hoặc mô hình ML là một mảng có kích thước 1000. Mỗi phần tử là xác suất mà dữ liệu đầu vào thuộc về danh mục hiện tại.
considered
5 1
Ngoài ra, tổng của tất cả các phần tử trong đầu ra SoftMax bằng 1.Vì vậy, nếu đầu ra bị tắt [0] [1000], thì:ra [0] [i] = xác suất mà đầu vào thuộc về danh mục thứ i

Lưu ý kết luận

Đánh giá mô hình

Nó có nghĩa là gì có nghĩa là hàng đầu

Độ chính xác hàng đầu là độ chính xác thông thường, dự đoán mô hình (mức có xác suất cao nhất) phải là chính xác câu trả lời dự kiến. Nó đo tỷ lệ các ví dụ mà dự đoán phù hợp với nhãn mục tiêu đơn. Trong trường hợp của chúng tôi, độ chính xác top 1 = 2/5 = 0,4.the conventional accuracy, model prediction (the one with the highest probability) must be exactly the expected answer. It measures the proportion of examples for which the predictedlabel matches the single target label. In our case, the top-1 accuracy = 2/5 = 0.4.

Lỗi Top1 và Top5 là gì?

Lỗi top 1 là tỷ lệ của thời gian phân loại không cung cấp điểm cao nhất cho lớp chính xác.Tỷ lệ lỗi hàng đầu là tỷ lệ phần trăm của bộ phân loại không bao gồm lớp thích hợp trong số năm dự đoán hàng đầu của nó.

Điểm chính xác tốt nhất là bao nhiêu?

Vì vậy, chính xác độ chính xác tốt trông như thế nào?Độ chính xác tốt trong học máy là chủ quan.Nhưng theo ý kiến của chúng tôi, bất cứ điều gì lớn hơn 70% là một hiệu suất mô hình tuyệt vời.Trên thực tế, một thước đo độ chính xác của bất cứ thứ gì trong khoảng 70% -90% không chỉ là lý tưởng, nó còn thực tế.anything greater than 70% is a great model performance. In fact, an accuracy measure of anything between 70%-90% is not only ideal, it's realistic.

Độ chính xác cao hơn luôn luôn tốt hơn?

Độ chính xác có nghĩa là các mô hình dự đoán tất cả các nhãn tốt như thế nào.Họ tin rằng độ chính xác cao hơn có nghĩa là hiệu suất tốt hơn.Chà, đó là sự thật, nhưng nếu bạn chỉ sử dụng độ chính xác, bạn phải cẩn thận.Độ chính xác đếm tất cả các giá trị dự đoán thực sự, nhưng không cụ thể cho mỗi nhãn tồn tại.higher accuracy means better performance. Well, that's true, but if you just use accuracy, you have to be careful. Accuracy counts all of the true predicted values, but not specific for each label that exists.