Machine learning device, machine learning method, and machine learning program

The proposed machine learning technique simplifies incremental few-shot learning by reducing meta-learning target modules through pre-trained feature extractors and self-distillation, enhancing convergence and adaptability to new tasks.

JP7806486B2Active Publication Date: 2026-01-27JVC KENWOOD CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2021209556
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2021-12-23
Publication Date
2026-01-27
Estimated Expiration
2041-12-23

AI Technical Summary

Technical Problem

Existing incremental few-shot learning methods, such as XtarNet, require multiple meta-learning target modules, making it difficult for learning to converge and adapt to new tasks effectively.

Method used

A machine learning device and method that reduces the number of meta-learning target modules by using pre-trained feature extractors for base and new classes, incorporating a self-distillation process to generate task-adaptive representations, and minimizing classification loss through mixed feature vectors and adjusted classification weights.

Benefits of technology

Facilitates learning convergence and reduces complexity by minimizing the number of meta-learning target modules, allowing for efficient adaptation to new tasks with fewer resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007806486000001
    Figure 0007806486000001
  • Figure 0007806486000002
    Figure 0007806486000002
  • Figure 0007806486000003
    Figure 0007806486000003
Patent Text Reader

Abstract

To provide a machine learning technique with which modules for meta-learning can be reduced and learning is easily converged.SOLUTION: Provided is a machine learning device 200 that continuously learns a small number of new classes compared to the base classes. A base class feature extraction unit 50 extracts a feature vector of the base classes. A new class feature extraction unit 52 extracts a feature vector of the new classes. A mixed feature calculation unit 60 mixes the feature vector of the base classes with the feature vector of the new classes to calculate a mixed feature vector of the base classes and the new classes. A learning unit 80 classifies a query sample in a query set on the basis of a distance between the position of the mixed feature vector of the query sample of the query set and the position of a classification weight vector for each class in a projection space, and learns a classification weight vector of the new classes so as to minimize classification loss.SELECTED DRAWING: Figure 6
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present invention relates to machine learning techniques. [Background technology]

[0002] Humans can learn new knowledge through long-term experience and retain previous knowledge. However, the knowledge of a convolutional neural network (CNN) depends on the dataset used for training, and adapting to changes in the data distribution requires retraining the CNN parameters for the entire dataset. As a CNN learns new tasks, its estimation accuracy for previous tasks decreases. Thus, continuous training of a CNN inevitably leads to catastrophic forgetting, in which the learning results of previous tasks are forgotten while learning a new task.

[0003] Incremental learning or continual learning has been proposed as a method to avoid fatal forgetting. Incremental learning is a learning method in which, when a new task or new data arises, the model is improved and learned, rather than learning from scratch.

[0004] On the other hand, since new tasks often require only a small amount of sample data, few-shot learning has been proposed as a method for efficiently learning with a small amount of training data. In few-shot learning, new tasks are learned using a small amount of different parameters, without re-learning previously learned parameters.

[0005] A method called incremental few-shot learning (IFSL) has been proposed, which combines continuous learning, which learns new classes without fatal forgetting of the learning results of base classes, with few-shot learning, which learns new classes that are fewer in number than the base classes (Non-Patent Document 1). In incremental few-shot learning, base classes can be learned from a large dataset, and new classes can be learned from a small amount of sample data.

[0006] In addition, a method has been proposed to improve the classification accuracy of a model by sequential self-distillation, which starts with a 0th generation model that has been pre-trained on basic classes, prepares a kth generation model that has the structure of a (k-1)th generation model but has initialized weights, and learns the weights of the kth generation model so that it produces an output close to the soft label output result (probability of the class to be classified) of the (k-1)th generation model (Non-Patent Document 2). [Prior art documents] [Non-patent literature]

[0007] [Non-Patent Document 1] Yoon, SW, Kim, DY, Seo, J., & Moon, J. (2020, November). XtarNet: Learning to extract task-adaptive representation for incremental few-shot learning. In International Conference on Machine Learning (pp. 10852-10860). PMLR. [Non-patent document 2] Tian, ​​Y., Wang, Y., Krishnan, D., Tenenbaum, JB, & Isola, P. (2020). Rethinking few-shot image classification: a good embedding is all you need?. In Computer Vision?ECCV 2020: 16th European Conference, Glasgow, UK, August 23?28, 2020, Proceedings, Part XIV 16 (pp. 266-282). Springer International Publishing. Summary of the Invention [Problem to be solved by the invention]

[0008] An example of a continuous few-shot learning method is XtarNet, described in Non-Patent Document 1. XtarNet learns to extract task-adaptive representations (TARs) in continuous few-shot learning, but there is an issue that multiple meta-learning target modules are required for extraction, making it difficult for learning to converge.

[0009] The present invention has been made in light of these circumstances, and its purpose is to provide a machine learning technique that can reduce the number of meta-learning target modules and facilitate learning convergence. [Means for solving the problem]

[0010] In order to solve the above problem, one embodiment of the present invention provides a machine learning device that continuously learns a smaller number of new classes than base classes, and includes: a base class feature extraction unit that extracts feature vectors of the base classes; a new class feature extraction unit that extracts feature vectors of the new classes; a mixed feature calculation unit that mixes the feature vectors of the base classes and the feature vectors of the new classes to calculate mixed feature vectors of the base classes and the new classes; and a learning unit that classifies query samples of a query set based on the distance between the position of the mixed feature vector of the query sample of the query set and the position of the classification weight vector of each class in a projection space, and learns classification weight vectors of the new classes so as to minimize classification loss. The new class feature extraction unit is obtained by self-distilling the base class feature extraction unit k times (k is a natural number).

[0011] Another aspect of the present invention is a machine learning method for continuously learning a smaller number of new classes than base classes, the method including: a base class feature extraction step of extracting feature vectors of base classes using a base class feature extractor, a self-distillation step of self-distilling the base class feature extractor k times (k is a natural number) to obtain a new class feature extractor, a new class feature extraction step of extracting feature vectors of the new class using the new class feature extraction, a mixed feature calculation step of mixing the feature vectors of the base classes and the feature vectors of the new class to calculate mixed feature vectors of the base classes and the new class, and a learning step of classifying query samples of the query set based on the distance between the position of the mixed feature vector of the query sample of the query set and the position of the classification weight vector of each class in a projection space, and learning the classification weight vector of the new class so as to minimize classification loss.

[0012] Any combination of the above components, and any transformation of the present invention into a method, device, system, recording medium, computer program, etc., are also valid aspects of the present invention. [Effects of the Invention]

[0013] According to the present invention, it is possible to provide a machine learning technique that can reduce the number of meta-learning target modules and facilitate learning convergence. [Brief explanation of the drawings]

[0014] [Figure 1A] FIG. 10 is a diagram illustrating the configuration of a pre-training module. [Figure 1B] FIG. 10 is a diagram illustrating the configuration of a continuous few-shot learning module. [Figure 1C] FIG. 1 is a diagram illustrating episode-based training. [Figure 2A] FIG. 10 is a diagram illustrating a configuration for generating a task-specific mixture weight vector for calculating a task-adaptive representation from a support set. [Figure 2B] FIG. 10 is a diagram illustrating a configuration for calculating a task-adaptive representation from a support set and generating a classification weight vector set W based on the task-adaptive representation. [Figure 3] FIG. 10 is a diagram illustrating a configuration for calculating a task-adaptive representation from a query set, classifying a query sample based on the task-adaptive representation and a task-adjusted classification weight vector set, and minimizing classification loss. [Figure 4] FIG. 1 is a diagram illustrating the configuration and operation of a machine learning device in a pre-learning phase. [Figure 5] FIG. 1 is a diagram illustrating the configuration and operation of a machine learning device in a meta-learning and testing phase. [Figure 6] 1 is a configuration diagram of a machine learning device according to an embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0015] First, we provide an overview of continuous few-shot learning with XtarNet. XtarNet learns to extract task-adaptive representations (TAR). First, it uses a backbone network pre-trained on a dataset of base classes to obtain features of the base classes. Second, it uses an additional module meta-trained across episodes of the novel class to obtain features of the novel class. The mixture of features of the base classes and features of the novel class is called a task-adaptive representation (TAR). The base class and novel class classifiers use this TAR to quickly adapt to the given task and perform the classification task.

[0016] The learning procedure of XtarNet will be outlined with reference to FIGS. 1A to 1C.

[0017] 1A is a diagram illustrating the configuration of a pre-training module 20. The pre-training module 20 includes a backbone CNN 22 and basic class classification weights 24.

[0018] The base class dataset 10 includes N samples. An example of a sample is an image, but is not limited to this. The backbone CNN 22 is a convolutional neural network that pre-trains the base class dataset 10. The base class classification weights 24 are the weight vector W of the base class classifier. base and shows the average feature values ​​of the samples in the dataset 10 of the basic class.

[0019] In training stage 1, a backbone CNN 22 is pre-trained with a dataset 10 of base classes.

[0020] FIG. 1B is a diagram illustrating the configuration of the continuous few-shot learning module 100. The continuous few-shot learning module 100 is obtained by adding a meta module group 30 and a new class classification weight 34 to the pre-training module 20 in FIG. 1A. The meta module group 30 includes three multilayer neural networks, which will be described later, and performs post-training on a new class dataset. The number of samples included in the new class dataset is smaller than the number of samples included in the base class dataset. The new class classification weight 34 is a weight vector W of the classifier for the new class. novel and indicates the average feature value of the samples in the dataset of the new class.

[0021] In the learning stage 2, a set of meta-modules 30 is trained episodically based on the pre-trained modules 20.

[0022] FIG. 1C is a diagram illustrating episodic training. Episodic training includes a meta-training stage and a test stage. The meta-training stage is performed for each episode, and the meta-module set 30 and new classification weights 34 are updated. The test stage performs a classification test using the meta-module set 30 and new classification weights 34 updated in the meta-training stage.

[0023] Each episode consists of a support set S and a query set Q. The support set S consists of a new class dataset 12, and the query set Q consists of a base class dataset 14 and a new class dataset 16. In the learning stage 2, in each episode, query samples of both the base class and new class included in the query set Q are classified based on the support samples in the given support set S, and the parameters of the meta-module group 30 and the new class classification weights 34 are updated to minimize the classification loss.

[0024] The configuration for processing the support set S in XtarNet will be described with reference to Figures 2A and 2B, and the configuration and learning process for processing the query set Q in XtarNet will be described with reference to Figure 3.

[0025] In addition to the backbone CNN22, XtarNet uses the following three different meta-learnable modules as a set of meta-modules30: (1) MetaCNN: A neural network that extracts features from new classes (2) MergeNet: A neural network that combines features of base classes with features of new classes. (3) TconNet: A neural network that adjusts the weights of the classifier.

[0026] Figure 2A shows the task-specific mixture weight vector ω for computing the task-adaptive representation TAR from the support set S. pre and ω meta FIG. 10 is a diagram illustrating a configuration for generating

[0027] The support set S includes the dataset 12 of the new class. Each support sample in the support set S is input to the backbone CNN 22. The backbone CNN 22 processes the support sample to output a feature vector of the base class (referred to as a "base feature vector"), which is supplied to the averaging unit 23. The averaging unit 23 averages the base feature vectors output by the backbone CNN 22 for all support samples to calculate an average base feature vector, which is input to the MergeNet 36.

[0028] The output of the hidden layer of the backbone CNN 22 is input to MetaCNN 32. MetaCNN 32 processes the output of the hidden layer of the backbone CNN 22 to output a feature vector of a new class (referred to as a "new feature vector") and supplies it to the averaging unit 33. The averaging unit 33 averages the new feature vector output by MetaCNN 32 over all support samples to calculate an average new feature vector, which is input to MergeNet 36.

[0029] MergeNet36 processes the average basic feature vector and the average novel feature vector with a neural network to calculate a task-specific mixture weight vector ω to calculate the task-adaptive representation TAR. pre and ω meta Output.

[0030] The backbone CNN22 is a basic feature vector extractor f that extracts basic feature vectors for the input x. θ It works as follows: for an input x, it generates a basic feature vector f θ (x) is output. The intermediate layer output of the backbone CNN22 for the input x is a θ (x). MetaCNN32 uses the intermediate layer output a θ It acts as a new feature vector extractor g that extracts a new feature vector for (x), and the intermediate layer output a θ (x) to create a new feature vector g(a θ (x)).

[0031] FIG. 2B is a diagram illustrating a configuration for calculating a task-adaptive representation TAR from a support set S and generating a classification weight vector set W based on the task-adaptive representation TAR.

[0032] The vector product calculator 25 calculates the basic feature vector f output from the backbone CNN 22 for each support sample x in the support set S. θ (x) and the mixed weight vector ω output from MergeNet36 pre The product of each element between the vectors is calculated and provided to the vector sum calculator 37.

[0033] The vector multiplication calculator 35 calculates the intermediate layer output a of the backbone CNN 22 for each support sample x of the support set S. θ For (x), the new feature vector g(a θ (x)) and the mixture weight vector ω output from MergeNet36 meta The product of each element between the vectors is calculated and provided to the vector sum calculator 37.

[0034] The vector sum calculator 37 calculates the basic feature vector f θ (x) and the mixture weight vector ω pre and the new feature vector g(a θ (x)) and the mixture weight vector ω meta The vector sum of the product of these is calculated, and output as the task-adaptive representation TAR of each support sample x in the support set S, which is then provided to the TconNet 38 and the projection space construction unit 40. The task-adaptive representation TAR is a mixed feature vector that combines the basic feature vector and the new feature vector.

[0035] The formula for calculating the task adaptation representation (TAR) is as follows, where the product of each vector component is represented by ×. TAR=ω pre ×f θ (x)+ω meta ×g(a θ (x)) The formula for calculating the task adaptive representation TAR is to calculate the sum of the element-wise products between the mixture weight vector and the feature vector. The task adaptive representation TAR is calculated for each support sample in the support set S.

[0036] TconNet38 uses a classification weight vector set W=[W base ,W novel ] and uses the task-adaptive representation TAR of each support sample to generate a task-adjusted classification weight vector set W * Output.

[0037] The projection space construction unit 40 calculates the average {C k} and W after task adjustment * Construct a task-adaptive projection space M such that M is consistent on the projection space M.

[0038] Figure 3 shows the task-adaptive representation TAR calculated from the query set Q, and the task-adaptive representation TAR and the task-adjusted classification weight vector set W * FIG. 10 is a diagram illustrating a configuration for classifying a query sample based on the criterion 100 and minimizing the classification loss.

[0039] The vector product calculator 25 calculates the basic feature vector f output from the backbone CNN 22 for each query sample x in the query set Q. θ (x) and the mixed weight vector ω output from MergeNet36 pre The product of each element between the vectors is calculated and provided to the vector sum calculator 37.

[0040] The vector multiplication unit 35 calculates the intermediate layer output a of the backbone CNN 22 for each query sample x in the query set Q. θ For (x), the new feature vector g(a θ (x)) and the mixture weight vector ω output from MergeNet36 meta The product of each element between the vectors is calculated and provided to the vector sum calculator 37.

[0041] The vector sum calculator 37 calculates the basic feature vector f θ (x) and the mixture weight vector ω pre and the new feature vector g(a θ (x)) and the mixture weight vector ω meta The vector sum of the product of these is calculated, and the result is output as a task-adaptive representation TAR of each query sample x in the query set Q, which is then provided to the projection space query classifier 42.

[0042] The task-adjusted classification weight vector set W output by TconNet38 * is input to the projection space query classifier 42.

[0043] The projection space query classification unit 42 calculates the Euclidean distance between the position of the task-adaptive representation TAR calculated for each query sample in the query set Q and the position of the mean feature vector of the class to be classified in the projection space M, and classifies the query sample into the closest class. Here, the projection space construction unit 40 works to determine whether the mean position of the class to be classified in the projection space M is the same as the task-adjusted classification weight vector set W * Note that this is consistent with

[0044] The loss optimization unit 44 evaluates the classification loss of the query sample using a cross-entropy function, and proceeds with learning so that the classification result of the query set Q approaches the correct answer and the classification loss is minimized. As a result, the position of the task-adapted representation TAR calculated for the query sample and the position of the mean feature vector of the class to be classified, i.e., the classification weight vector set W after task adjustment, are calculated. * The learnable parameters of MetaCNN32, MergeNet36, and TconNet38 and the new classification weights W are used to minimize the distance between the positions of novel will be updated.

[0045] The configuration and operation of the embodiment of the present invention will be described with reference to FIGS.

[0046] Figure 4 illustrates the training process of the feature extractor in the pre-training phase. The zeroth generation feature extractor f is pre-trained on the base class dataset and is suitable for identifying base classes. Φ By repeating self-distillation using the basic class dataset with (Code 90-0) as the teacher model, we can obtain feature extractors f from the first to kth generations suitable for identifying new classes. Φ (References 90-1 to 90-k) are produced. For the self-distillation, the method described in Non-Patent Document 2 is used.

[0047] 5 shows the configuration and operation of a machine learning device in the meta-learning and testing phases. The machine learning device 200 uses a zero-generation feature extractor f instead of the backbone CNN 22 in FIG. Φ (symbol 90-0) is used, and the k-th generation feature extractor f Φ The difference between the configuration of XtarNet in Figure 3 is that it uses (symbol 90-k), but the other configurations and operations are the same as those of XtarNet in Figure 3.

[0048] 0th generation feature extractor f Φ (Code 90-0) is the basic feature vector f for each support sample x in the query set Q. θ (x) is output. The kth generation feature extractor fΦ (Symbol 90-k) is a new feature vector g for each support sample x in the query set Q. θ Outputs (x).

[0049] In the conventional XtarNet shown in Figure 3, among the components of the TAR calculator, the meta-learning target modules are MetaCNN32 and MergeNet36.

[0050] In contrast, in the machine learning device 200 of this embodiment, the zeroth generation feature extractor f Φ extracts the features of the base class, and the kth generation feature extractor f Φ extracts the features of a new class. Here, the k-th generation feature extractor f Φ Instead of , we use the feature extractors f Φ The average value of the k-th generation feature extractor f Φ Instead of this, we use a feature extractor f Φ The zeroth generation feature extractor f Φ and the first to kth generation feature extractors f Φ As a pre-trained model, the parameters are fixed in the meta-learning stage. This leaves only MergeNet36 as the meta-learning target module of the machine learning device 200, making it easier for meta-learning to converge.

[0051] 6 is a configuration diagram of a machine learning device 200 according to an embodiment of the present invention. Here, the description will focus on the configuration that is added to XtarNet, omitting the description of the configuration that is common to XtarNet as appropriate.

[0052] The machine learning device 200 includes a base class feature extraction unit 50 , a new class feature extraction unit 52 , a mixed feature calculation unit 60 , an adjustment unit 70 , and a learning unit 80 .

[0053] A query set Q consisting of the data set 14 of the base class and the data set 16 of the new class is input to the base class feature extraction unit 50. The base class feature extraction unit 50 is a zero-generation feature extractor f ΦThe basic class feature extraction unit 50 extracts and outputs a basic feature vector of each query sample in the query set Q.

[0054] The new class feature extraction unit 52 receives as input a query set Q consisting of the base class dataset 14 and the new class dataset 16. The new class feature extraction unit 52 uses the k-th generation feature extractor f Φ or the output value of the first to kth generation feature extractor f Φ The new class feature extraction unit 52 outputs the average value of the output values ​​of the feature extractor f of any generation from the first generation to the kth generation. Φ The new class feature extraction unit 52 extracts and outputs a new feature vector of each query sample in the query set Q.

[0055] The mixed feature calculation unit 60 calculates a mixed feature vector as a task adaptive representation TAR by mixing the basic feature vector and the new feature vector of each query sample, and provides the mixed feature vector to the adjustment unit 70 and the learning unit 80. The mixed feature calculation unit 60 is, for example, MergeNet36.

[0056] The adjustment unit 70 calculates a task-adjusted classification weight vector set W using the task-adaptive representation TAR of each query sample. * and provides it to the learning unit 80. The adjustment unit 70 is, for example, a TconNet 38.

[0057] The learning unit 80 classifies the query sample based on the distance between the position of the task-adaptive representation TAR of the query sample and the weight of the classifier for each class in the projection space M, and learns to minimize the classification loss. The learning unit 80 is, for example, the projection space query classifier 42 and the loss optimizer 44.

[0058] The various processes of the machine learning device 200 described above can naturally be realized as a device using hardware such as a CPU and memory, but can also be realized by firmware stored in a ROM (read-only memory) or flash memory, or software for a computer, etc. The firmware program or software program can be provided by being recorded on a computer-readable recording medium, or can be transmitted and received with a server via a wired or wireless network, or can be transmitted and received as data broadcasting via terrestrial or satellite digital broadcasting.

[0059] As described above, in conventional XtarNet, multiple meta-learning target modules for extracting task-adaptive representations are required, which makes learning more complex and makes it difficult for losses to converge. In contrast, according to the machine learning device 200 of the embodiment, a feature extractor suitable for identifying base classes and a feature extractor suitable for identifying new classes are pre-trained during pre-training, which makes it possible to reduce the number of meta-learning target modules, facilitates loss convergence, and shortens the learning time.

[0060] The present invention has been described above based on the embodiments. The embodiments are merely examples, and it will be understood by those skilled in the art that various modifications are possible in the combination of the components and treatment processes, and that such modifications are also within the scope of the present invention. [Explanation of symbols]

[0061] 10 base class dataset, 12 novel class dataset, 14 base class dataset, 16 novel class dataset, 20 pre-training module, 22 backbone CNN, 23 averaging unit, 24 base class classification weight, 30 meta module group, 32 MetaCNN, 33 averaging unit, 34 novel class classification weight, 36 MergeNet, 38 TconNet, 40 projection space construction unit, 42 projection space query classification unit, 44 loss optimization unit, 50 base class feature extraction unit, 52 novel class feature extraction unit, 60 mixed feature calculation unit, 70 adjustment unit, 80 learning unit, 90 feature extractor, 100 continuous few-shot learning module, 200 machine learning device.

Claims

1. A machine learning device that continuously learns a small number of new classes compared to a base class, a base class feature extraction unit for extracting a feature vector of a base class; a new class feature extraction unit that extracts a feature vector of a new class; a mixed feature calculation unit that mixes the feature vector of the base class and the feature vector of the new class to calculate a mixed feature vector of the base class and the new class; a learning unit that classifies the query samples of the query set based on a distance between a position of the mixed feature vector of the query sample of the query set and a position of a classification weight vector of each class in the projection space, and learns a classification weight vector of a new class so as to minimize a classification loss; the new class feature extraction unit is obtained by self-distilling the basic class feature extraction unit k times (k is a natural number); The new class feature extraction unit is a machine learning device characterized in that it averages and outputs the values ​​output by the feature extraction units from the first generation to the kth generation obtained by self-distilling the basic class feature extraction unit k times.

2. A machine learning method for continuously learning a small number of new classes compared to a base class, comprising: a base class feature extraction step of extracting a base class feature vector using a base class feature extractor; a self-distillation step of self-distilling the basic class feature extractor k times (k is a natural number) to obtain a new class feature extractor; a new class feature extraction step of extracting a feature vector of a new class using the new class feature extractor; a mixed feature calculation step of mixing the feature vector of the base class and the feature vector of the new class to calculate a mixed feature vector of the base class and the new class; a learning step of classifying the query samples of the query set based on a distance between a position of the mixed feature vector of the query samples of the query set and a position of the classification weight vector of each class in the projection space, and learning a classification weight vector of a new class so as to minimize a classification loss; A machine learning method characterized in that the new class feature extractor averages and outputs the values ​​output by the feature extraction steps from the first generation to the kth generation obtained by self-distilling the basic class feature extractor k times.

3. A machine learning program that continuously learns a small number of new classes compared to a base class, a base class feature extraction step of extracting a base class feature vector using a base class feature extractor; a self-distillation step of self-distilling the basic class feature extractor k times (k is a natural number) to obtain a new class feature extractor; a new class feature extraction step of extracting a feature vector of a new class using the new class feature extractor; a mixed feature calculation step of mixing the feature vector of the base class and the feature vector of the new class to calculate a mixed feature vector of the base class and the new class; a learning step of classifying the query samples of the query set based on the distance between the position of the mixed feature vector of the query samples of the query set and the position of the classification weight vector of each class in the projection space, and learning the classification weight vector of a new class so as to minimize the classification loss; A machine learning program characterized in that the new class feature extractor averages and outputs the values ​​output by the feature extraction steps from the first generation to the kth generation obtained by self-distilling the basic class feature extractor k times.