What to do when training doesn't fit training data well?

조회 수: 8 (최근 30일)
Jordan Pauls
Jordan Pauls 2020년 5월 28일
답변: Nagasai Bharat 2020년 9월 29일
Hello,
I've been working on a Deep Learning system to learn some simple communication system properties and I'm having trouble with training/predicting. First, the training process quickly goes to zero, which would indicate that it has fit the data well, or even overfit the training data.
However, when using the predict function on the training data to double check, the plot indicates that the network does not predict the data well:
And cross validation prediction is even worse:
Does anyone have a guess as to why the training process shows an error close to zero, but both training set and cv set prediction is poor?
Thanks!
  댓글 수: 3
Jordan Pauls
Jordan Pauls 2020년 5월 29일
Hi,
I'm attempting to train a Deep Neural Network for calculating a wireless channel covariance matrix based on a channel conditions matrix. For training examples, the input I'm using is randn(Rx,Tx), and the output is a slightly modified Singular Value Decomposition of the input.
The network is built with the following:
layers_1 = [
imageInputLayer(Input_Layer_Size,'Name','SeqInput') %36 input features
fullyConnectedLayer(128,"Name","fc_1")
reluLayer("Name","relu_1")
fullyConnectedLayer(128,"Name","fc_2")
reluLayer("Name","relu_2")
fullyConnectedLayer(128,"Name","fc_3")
reluLayer("Name","relu_3")
fullyConnectedLayer(128,"Name","fc_4")
reluLayer("Name","relu_4")
fullyConnectedLayer(128,"Name","fc_5")
reluLayer("Name","relu_5")
fullyConnectedLayer(64,"Name","fc_6")
fullyConnectedLayer(length(Output_Layer_Size),"Name","fc_7")
regressionLayer("Name","regressionoutput")];
with these training options:
options = trainingOptions('adam', ...
'InitialLearnRate',0.01,...
'LearnRateSchedule','piecewise', ...
'LearnRateDropFactor',0.8, ...
'LearnRateDropPeriod',10, ...
'MaxEpochs',50, ...
'MiniBatchSize',256, ...
'Plots','training-progress');
net1 = trainNetwork(Input_Train,Output_Train,layers_1,options);
So far I've tried training with 10,000 and 100,000 training examples and there doesn't seem to be a difference. I'm mainly wondering, why does training show such a low error almost immediately, but the network doesn't seem to fit the data well? Since the actual values are so small and the network outputs variables of type 'single', could it be a precision error?
vaibhav mishra
vaibhav mishra 2020년 6월 30일
maybe your model is getting overfit.
try to adopt some dropout and regularization in your model.

댓글을 달려면 로그인하십시오.

답변 (2개)

vaibhav mishra
vaibhav mishra 2020년 6월 30일
maybe your model is getting overfit.
try to adopt some dropout and regularization in your model.

Nagasai Bharat
Nagasai Bharat 2020년 9월 29일
Hi,
This issue may be mainly due to the overfitting of the data with respect to your model. As dropout is already applied while training you could use regularization methods (E.g. Batch Normalization, L2 Norm) to the model while training. Also, you could try altering the learning rate so that the model does not overfit.
You can refer to the following documentation and other similar training functions.

카테고리

Help CenterFile Exchange에서 Get Started with Statistics and Machine Learning Toolbox에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by