Saya baru-baru ini menemukan ide tentang pelatihan jaringan saraf tanpa beban dan telah menerapkan versi kasar ini dikombinasikan dengan pekerjaan terbaru yang telah saya lakukan di Teorema Taken (lihat postingan saya di sini, di sini dan di sini ) dan menggunakan mekanika statistik pendekatan untuk membuat data sintetis.
Menggunakan yang sederhana Oktaf fungsi di bawah dengan Kriteria Informasi Akaike sebagai tujuan minimalisasi
## Copyright (C) 2019 dekalog
##
## This program is free software: you can redistribute it and/or modify it
## under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful, but
## WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program. If not, see
## .
## -*- texinfo -*-
## @deftypefn {} {@var{J} =} wann_training_of_cyclic_embedding()
##
## @seealso{}
## @end deftypefn
## Author: dekalog
## Created: 2019-10-26
function J = wann_training_of_cyclic_embedding( x )
global sample_features ; global sample_targets ;
epsilon = 1e-15 ; ## to ensure log() does not give out a nan
## get the parameters from input x
activation_funcs = floor( x( 1 : 5 ) ) ; ## get the activations, 1 == sigmoid, 2 == tanh, 3 == Lecun sigmoid
layer_size = floor( x( 6 : 10 ) ) ;
[ min_layer_size , ix_min ] = min( layer_size ) ;
if( min_layer_size > 0 ) ## to be expected most of the time
nn_depth = length( layer_size ) ;
elseif( min_layer_size == 0 ) ## one layer has no nodes, hence limits depth of nn
nn_depth = ix_min - 1 ;
endif
length_jj_loop = 25 ;
all_aic_values = zeros( length_jj_loop , 1 ) ;
for jj = 1 : length_jj_loop
previous_layer_out = sample_features ;
sum_of_k = 0 ;
for ii = 1 : nn_depth
new_weight_matrix = ones( size( previous_layer_out , 2 ) , layer_size( ii ) ) ./ sqrt( size( previous_layer_out , 2 ) ) ;
sum_of_k = sum_of_k + numel( new_weight_matrix ) ;
prior_to_activation_input = previous_layer_out * new_weight_matrix ;
## select the activation function
if( activation_funcs( ii ) == 1 ) ## sigmoid activation
previous_layer_out = 1.0 ./ ( 1.0 .+ exp( -prior_to_activation_input ) ) ;
elseif( activation_funcs( ii ) == 2 ) ## tanh activation
previous_layer_out = tanh( prior_to_activation_input ) ;
elseif( activation_funcs( ii ) == 3 ) ## lecun sigmoid activation
previous_layer_out = sigmoid_lecun_m( prior_to_activation_input ) ;
endif
endfor
## the final logistic output
new_weight_matrix = ones( size( previous_layer_out , 2 ) , 1 ) ./ sqrt( size( previous_layer_out , 2 ) ) ;
sum_of_k = sum_of_k + numel( new_weight_matrix ) ;
final_output = previous_layer_out * new_weight_matrix ;
final_output = 1.0 ./ ( 1.0 .+ exp( -final_output ) ) ;
max_likelihood = sum( log( final_output .+ epsilon ) .* sample_targets + log( 1 .- final_output .+ epsilon ) .* ( 1 .- sample_targets ) ) ;
## get Akaike Information criteria
all_aic_values( jj ) = 2 * sum_of_k - 2 * max_likelihood ;
endfor ## end of jj loop
J = mean( all_aic_values ) ;
endfunction
dan antarmuka Oktaf dari Perpustakaan Bayesopt Saat ini saya sedang mengulangi arsitektur yang berbeda (hingga 5 lapisan tersembunyi dalam dengan maksimal 100 node per lapisan dan menggunakan pilihan 3 aktivasi tersembunyi) untuk yang sederhana Regresi logistik model untuk memprediksi titik balik dalam berbagai rangkaian data sintetis mekanika statistik dengan hanya menggunakan fitur berdasarkan penanaman Taken.
Akan ada informasi lebih lanjut pada waktunya.