Кластеризация групп входящих пакетов с помощью нейронных сетей конкурирующего типа
Классификация группы входящих пакетов, поступающих на одну из рабочих станций в ЛВС. Описание хакерских атак. Построение интеллектуальной системы анализа входящего трафика по классам опасности на использовании нейронной сети конкурирующего типа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.10.2010 |
Размер файла | 286,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
InputValues : Array of Extended;
OutputValues : Array of Extended;
constructor Init(a : PIntArray; b : PExtArray);
procedure GetInputValues(Values : PExtArray);
procedure GetOutputValues;
procedure Excitement;
procedure randomization;
end;
TKohonenLayer = class(TLayer)
public
eta,sigma : Extended;
h,w : Word;
constructor Init(a : PIntArray; b : PExtArray);
procedure Normalize;
function TheWinnerTakesItAll : integer;
function Classic : integer;
procedure Learning(a : integer; SpeedLearn : Extended);
procedure LearningNeib(a : integer; SpeedLearn : Extended);
procedure SigmaInit(s : Extended);
procedure ConvexCombination(delta : Extended);
procedure NeuralGaz(SpeedLearn : Extended);
end;
procedure TKohonenLayer.SigmaInit(s : Extended);
begin
Sigma:=s;
end;
procedure TKohonenLayer.ConvexCombination(delta : Extended);
var i : integer;
begin
eta:=eta+delta;
sigma:=sigma+0.1-10*delta;
for i:=0 to QInputs-1 do InputValues[i]:=InputValues[i]*eta+(1-eta)/sqrt(QInputs);
end;
constructor TKohonenLayer.Init(a : PIntArray; b : PExtArray);
var i : integer;
New : TIntArray;
begin
Inherited Init(a,b);
New:=a^;
H:=New.Value[3];
W:=Round(New.Value[2]/New.Value[3]);
Randomization;
for i:=0 to New.Value[2]-1 do Neurons[i].Pos:=3.75;
eta:=0;
end;
procedure TKohonenLayer.Normalize;
var i : integer;
Sum : Extended;
begin
Sum:=0;
for i:=0 to QInputs-1 do Sum:=Sum+Sqr(InputValues[i]);
for i:=0 to QInputs-1 do
InputValues[i]:=InputValues[i]/Sqrt(Sum);
end;
function TKohonenLayer.TheWinnerTakesItAll : integer;
var i,p : integer;
Min : Extended;
begin
Min:=Neurons[0].Y;
p:=0;
for i:=1 to QNeurons-1 do
begin
if Neurons[i].Pos>0.75 then
if Min>Neurons[i].Y then
begin
p:=i;
Min:=Neurons[i].Y;
end;
end;
for i:=0 to QNeurons-1 do Neurons[i].Y:=0;
for i:=0 to QNeurons-1 do
if i=p then Neurons[i].Pos:=Neurons[i].Pos-0.75
else Neurons[i].Pos:=Neurons[i].Pos+1/QNeurons;
Neurons[p].Y:=1;
GetOutputValues;
TheWinnerTakesItAll:=p;
end;
function TKohonenLayer.Classic : integer;
var i,p : integer;
Min : Extended;
begin
Min:=Neurons[0].Y;
p:=0;
for i:=1 to QNeurons-1 do
begin
if Min>Neurons[i].Y then
begin
p:=i;
Min:=Neurons[i].Y;
end;
end;
for i:=0 to QNeurons-1 do Neurons[i].Y:=0;
Neurons[p].Y:=1;
GetOutputValues;
Classic:=p;
end;
procedure TKohonenLayer.Learning(a : integer; SpeedLearn : Extended);
var i : integer;
begin
for i:=1 to QInputs do
Neurons[a].MassWeight[i]:=Neurons[a].MassWeight[i]+
SpeedLearn*(InputValues[i-1]-Neurons[a].MassWeight[i]);
end;
procedure TKohonenLayer.LearningNeib(a : integer; SpeedLearn : Extended);
var i,j : integer;
begin
for j:=0 to QNeurons-1 do
begin
for i:=1 to QInputs do
Neurons[j].MassWeight[i]:=Neurons[j].MassWeight[i]+
exp(-(Sqr((j div w)-(a div w)) + Sqr((j mod h)-(a mod h)))/(2*Sqr(sigma)))
*SpeedLearn*(InputValues[i-1]-Neurons[j].MassWeight[i]);
end;
end;
procedure TKohonenLayer.NeuralGaz(SpeedLearn : Extended);
var i,j,k,p : integer;
Mass : Array of Extended;
Min : Extended;
begin
SetLength(Mass,QNeurons);
for i:=0 to QNeurons-1 do Mass[i]:=-1;
p:=0;
for i:=0 to QNeurons-1 do
begin
p:=p+1;
Min:=999999;
k:=-1;
for j:=0 to QNeurons-1 do
begin
if Neurons[j].Y<Min then
if Mass[j]=-1 then
begin
k:=j;
Min:=Neurons[j].Y;
end;
end;
Mass[k]:=p;
end;
for j:=0 to QNeurons-1 do
begin
for i:=1 to QInputs do
Neurons[j].MassWeight[i]:=Neurons[j].MassWeight[i]+
exp(-Mass[j]/Sigma)*SpeedLearn*(InputValues[i-1]-Neurons[j].MassWeight[i]);
end;
end;
constructor TNeuron.Init(a : PIntArray; b : PExtArray);
var
New : TIntArray;
begin
New:=a^;
ExtVal:=b^;
IntVal:=TIntArray.Init(2);
IntVal.Value[0]:=New.Value[0]+1;
IntVal.Value[1]:=New.Value[1];
SetLength(MassWeight,IntVal.Value[0]);
if IntVal.Value[0]>0 then MassWeight[0]:=0;
Status:=0;
Y:=0;
Pos:=0;
end;
procedure TNeuron.GetAksonValue(a : PExtArray);
var
i : integer;
b : TExtArray;
begin
b:=a^;
Status:=MassWeight[0];
for i:=1 to IntVal.Value[0]-1 do Status:=Status+MassWeight[i]*b.Value[i-1];
Y:=FunctionActivation;
end;
procedure TNeuron.Distantion(a : PExtArray);
var i : integer;
b : TExtArray;
begin
b:=a^;
Status:=0;
for i:=1 to IntVal.Value[0]-1 do Y:=Y+Sqr(MassWeight[i]-b.Value[i-1]);
Y:=Sqrt(Y);
end;
function TNeuron.FunctionActivation : Extended;
Var m : Extended;
begin
case IntVal.Value[1] of
1 : m:=1/(1+exp(-ExtVal.Value[0]*Status));
2 : m:=ExtVal.Value[0]*Status;
end;
FunctionActivation:=m;
end;
procedure TNeuron.Randomization;
var i : integer;
begin
for i:=0 to IntVal.Value[0]-1 do MassWeight[i]:=random(255);
end;
constructor TLayer.Init(a : PIntArray; b : PExtArray);
var i : integer;
//c : TIntArray;
IntArr : TIntArray;
begin
IntArr:=a^;
QInputs:=IntArr.Value[0];
QNeurons:=IntArr.Value[2];
IntArr.NewLength(2);
ExtArr:=b^;
SetLength(Neurons,SizeOf(TNeuron)*QNeurons);
for i:=0 to QNeurons-1 do Neurons[i]:=TNeuron.Init(@IntArr,b);
SetLength(InputValues,QInputs);
for i:=0 to QInputs-1 do InputValues[i]:=0;
SetLength(OutputValues,QNeurons);
end;
procedure TLayer.GetInputValues(Values : PExtArray);
var i : integer;
a : TExtArray;
begin
a:=Values^;
for i:=0 to QInputs-1 do InputValues[i]:=a.Value[i];
end;
procedure TLayer.Excitement;
var i : integer;
a : TExtArray;
begin
a:=TExtArray.Init(QInputs);
for i:=0 to QInputs-1 do a.Value[i]:=InputValues[i];
for i:=0 to QNeurons-1 do Neurons[i].Distantion(@a);//GetAksonValue(@a);
GetOutputValues;
end;
procedure TLayer.GetOutputValues;
var i : integer;
begin
for i:=0 to QNeurons-1 do OutputValues[i]:=Neurons[i].Y;
end;
procedure TLayer.randomization;
var i : integer;
begin
for i:=0 to QNeurons-1 do Neurons[i].Randomization;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
F : TextFile;
i,j,p,s1,s2,k : integer;
Str : String;
Ch : Char;
Sum : integer;
Temp : Array of String;
begin
OpenDialog1.Filter:='?o?iaeuiue oaee|*.log|';
if (OpenDialog1.Execute) and fileExists(OpenDialog1.FileName) then
begin
AssignFile(F,OpenDialog1.FileName);
Reset(F);
ReadLn(F);
Read(F,Q);
SetLength(Prot,Q);
SetLength(Host,Q);
SetLength(LocalH,Q);
SetLength(Frag,Q);
SetLength(Size,Q);
SetLength(Proc,Q);
SetLength(Active,Q);
SetLength(HACK,Q);
MyList.Clear;
MyList.Add('Iiia?');
MyList.Add('I?ioieie');
MyList.Add('Oino');
MyList.Add('Naiy EAN');
MyList.Add('O?aaiaioaoey');
MyList.Add('?acia?');
MyList.Add('I?ioanni? %%');
MyList.Add('Ioaa?aao');
StringGrid1.RowCount:=Q+1;
StringGrid1.Rows[0]:=MyList;
for i:=0 to Q-1 do
begin
MyList.Clear;
Read(F,j);
MyList.Add(IntToStr(j));
//Memo4.Lines.Add(IntToStr(j));
Read(F,Ch);
Read(F,Ch);
Read(F,Ch);
Prot[i]:='';
While(ch<>' ') do
begin
Prot[i]:=Prot[i]+Ch;
Read(F,Ch);
end;
MyList.Add(Prot[i]);
Read(F,Ch);
Read(F,Ch);
Read(F,Ch);
Host[i]:='';
While(ch<>' ') do
begin
Host[i]:=Host[i]+Ch;
Read(F,Ch);
end;
MyList.Add(Host[i]);
Read(F,Ch);
Read(F,Ch);
Str:='';
While(ch<>' ') do
begin
Str:=Str+Ch;
Read(F,Ch);
end;
MyList.Add(Str);
if Str='YES' then LocalH[i]:=1 else LocalH[i]:=0;
Read(F,Ch);
Read(F,Ch);
Str:='';
While(ch<>' ') do
begin
Str:=Str+Ch;
Read(F,Ch);
end;
MyList.Add(Str);
if Str='YES' then Frag[i]:=1 else Frag[i]:=0;
Read(F,Size[i]);
MyList.Add(IntToStr(Size[i]));
Read(F,Proc[i]);
MyList.Add(IntToStr(Proc[i]));
Read(F,Ch);
Read(F,Ch);
Read(F,Ch);
Str:='';
While(ch<>' ') do
begin
Str:=Str+Ch;
Read(F,Ch);
end;
MyList.Add(Str);
if Str='YES' then Active[i]:=1 else Active[i]:=0;
StringGrid1.Rows[j]:=MyList;
Read(F,Ch);
if Ch='H' then HACK[i]:=1 else HACK[i]:=0;
//Memo4.Lines.Add('**************');
end;
//Memo4.Lines.Add(IntToStr(Q));
CloseFile(F);
SetLength(Temp,10);
SetLength(Mass,(Q-1)*11);
SetLength(SHack,Q-1);
for i:=0 to Q-12 do
begin
Mass[12*i]:=0;
for j:=0 to 9 do Mass[12*i]:=Mass[12*i]+LocalH[i+j];
Mass[12*i+1]:=0;
for j:=0 to 9 do Mass[12*i+1]:=Mass[12*i+1]+Frag[i+j];
Mass[12*i+2]:=0;
Mass[12*i+3]:=0;
for j:=0 to 9 do
if Prot[i+j]='TCP' then Mass[12*i+2]:=Mass[12*i+2]+1;
for j:=0 to 9 do
if Prot[i+j]='UDP' then Mass[12*i+3]:=Mass[12*i+3]+1;
Sum:=1;
s1:=0;
for j:=0 to 9 do
begin
Str:=Host[i+j];
p:=0;
for k:=0 to 9 do
begin
if Str=Host[i+k] then
begin
p:=p+1;
s2:=k;
end;
end;
if p>Sum then
begin
Sum:=p;
s1:=s2;
end;
end;
Mass[12*i+4]:=Sum;
Mass[12*i+5]:=LocalH[i+s1];
Sum:=0;
for j:=0 to 9 do Sum:=Sum+Proc[i+j];
Mass[12*i+6]:=Sum/10;
Mass[12*i+7]:=Proc[i+9]-Proc[i];
Sum:=0;
for j:=0 to 9 do Sum:=Sum+Size[i+j];
Mass[12*i+8]:=Sum/10;
Sum:=0;
for j:=0 to 9 do
if (Size[i+j]>=0.8*Mass[12*i+8])and
(Size[i+j]<=1.2*Mass[12*i+8]) then Sum:=Sum+1;
Mass[12*i+9]:=Sum;
Sum:=0;
for j:=0 to 9 do Sum:=Sum+Active[i+j];
Mass[12*i+10]:=Sum;
for j:=0 to 9 do Temp[j]:=Host[i+j];
for j:=0 to 8 do
begin
Str:=Temp[j];
for k:=0 to 9 do
if k<>j then
if Str=Temp[k] then Temp[k]:='';
end;
Sum:=0;
for j:=0 to 9 do
if Temp[j]<>'' then Sum:=Sum+1;
Mass[12*i+11]:=Sum;
Sum:=0;
for j:=0 to 9 do Sum:=Sum+HACK[i+j];
SHAck[i]:=Sum;
end;
end;
end;
procedure TForm1.InitializationMap;
var i,j,p : integer;
begin
for i:=0 to H*W-1 do
begin
p:=Random(Q-13);
for j:=0 to 10 do
KMap.Neurons[i].MassWeight[j+1]:=Mass[12*p+j];
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i,j,p,k,m : integer;
Quant,Winner : integer;
Part : TExtArray;
SMax,SMin : Extended;
begin
InitializationMap;
for i:=0 to Image1.Height-1 do
for j:=0 to Image1.Width-1 do
Image1.Picture.Bitmap.Canvas.Pixels[i,j]:=RGB(150,150,150);
Quant:=StrToInt(Edit3.Text);
Part:=TExtArray.Init(12);
SMax:=0.7;
SMin:=0.0001;
ProgressBar1.Max:=Quant;
ProgressBar1.Position:=0;
for i:=0 to Quant-1 do
begin
KMap.SigmaInit(10*(1-i/Quant)+0.1);
p:=Random(Q-12);
for j:=0 to 11 do Part.Value[j]:=Mass[12*p+j];
KMap.GetInputValues(@Part);
KMap.Excitement;
Case RadioGroup1.ItemIndex of
0:
begin
Winner:=KMap.Classic;
if CheckBox1.Checked then KMap.LearningNeib(Winner,SMax-(SMax-SMin)*i/Quant)
else KMap.Learning(Winner,SMax-(SMax-SMin)*i/Quant);
end;
1:
begin
Winner:=KMAp.TheWinnerTakesItAll;
if CheckBox1.Checked then KMap.LearningNeib(Winner,SMax-(SMax-SMin)*i/Quant)
else KMap.Learning(Winner,SMax-(SMax-SMin)*i/Quant)
end;
2:
begin
KMap.NeuralGaz(SMax-(SMax-SMin)*i/Quant);
end;
end;
ProgressBar1.StepBy(1);
end;
ProgressBar1.Position:=0;
for i:=0 to KMap.QNeurons-1 do
KMap.Neurons[i].MassWeight[0]:=0;
for i:=0 to Q-12 do
begin
for j:=0 to 11 do Part.Value[j]:=Mass[12*i+j];
KMap.GetInputValues(@Part);
KMap.Excitement;
Winner:=KMap.Classic;
KMap.Neurons[Winner].MassWeight[0]:=1;
//Memo4.Lines.Add(IntToStr(Winner));
if SHack[i]>=8 then
begin
for m:=0 to W1-1 do
for k:=0 to H1-1 do
Image1.Picture.Bitmap.Canvas.Pixels[(Winner div W)*W1+m,(Winner mod W)*H1+k]:=RGB(255,0,0);
end
else if SHack[i]=7 then
begin
for m:=0 to W1-1 do
for k:=0 to H1-1 do
Image1.Picture.Bitmap.Canvas.Pixels[(Winner div W)*W1+m,(Winner mod W)*H1+k]:=RGB(255,40,40);
end
else if SHack[i]=6 then
begin
for m:=0 to W1-1 do
for k:=0 to H1-1 do
Image1.Picture.Bitmap.Canvas.Pixels[(Winner div W)*W1+m,(Winner mod W)*H1+k]:=RGB(225,80,80);
end
else if SHack[i]=5 then
begin
for m:=0 to W1-1 do
for k:=0 to H1-1 do
Image1.Picture.Bitmap.Canvas.Pixels[(Winner div W)*W1+m,(Winner mod W)*H1+k]:=RGB(225,120,120);
end
else if SHack[i]=4 then
begin
for m:=0 to W1-1 do
for k:=0 to H1-1 do
Image1.Picture.Bitmap.Canvas.Pixels[(Winner div W)*W1+m,(Winner mod W)*H1+k]:=RGB(225,160,160);
end
else if SHack[i]=3 then
begin
for m:=0 to W1-1 do
for k:=0 to H1-1 do
Image1.Picture.Bitmap.Canvas.Pixels[(Winner div W)*W1+m,(Winner mod W)*H1+k]:=RGB(225,200,200);
end
else
begin
for m:=0 to W1-1 do
for k:=0 to H1-1 do
Image1.Picture.Bitmap.Canvas.Pixels[(Winner div W)*W1+m,(Winner mod W)*H1+k]:=RGB(225,225,225);
end;
//Image2.Picture.Bitmap.Canvas.
//.Pixels[j,i]:=RGB(
end;
for i:=0 to KMap.QNeurons-1 do
begin
if KMap.Neurons[i].MassWeight[0]=1 then
begin
Memo3.Lines.Add('Iae?ii '+IntToStr(i));
for j:=0 to KMap.QInputs-1 do
Memo3.Lines.Add(FloatToStr(KMap.Neurons[i].MassWeight[j]));
end;
end;
end;
Подобные документы
Прогнозирование на фондовом рынке с помощью нейронных сетей. Описание типа нейронной сети. Определение входных данных и их обработка. Архитектура нейронной сети. Точность результата. Моделирование торговли. Нейронная сеть прямого распространения сигнала.
дипломная работа [2,7 M], добавлен 18.02.2017Сущность, структура, алгоритм функционирования самообучающихся карт. Начальная инициализация и обучение карты. Сущность и задачи кластеризации. Создание нейронной сети со слоем Кохонена при помощи встроенной в среды Matlab. Отличия сети Кохонена от SOM.
лабораторная работа [36,1 K], добавлен 05.10.2010Способы применения технологий нейронных сетей в системах обнаружения вторжений. Экспертные системы обнаружения сетевых атак. Искусственные сети, генетические алгоритмы. Преимущества и недостатки систем обнаружения вторжений на основе нейронных сетей.
контрольная работа [135,5 K], добавлен 30.11.2015Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.
лабораторная работа [1,1 M], добавлен 05.10.2010Математические модели, построенные по принципу организации и функционирования биологических нейронных сетей, их программные или аппаратные реализации. Разработка нейронной сети типа "многослойный персептрон" для прогнозирования выбора токарного станка.
курсовая работа [549,7 K], добавлен 03.03.2015Общие сведения о принципах построения нейронных сетей. Искусственные нейронные системы. Математическая модель нейрона. Классификация нейронных сетей. Правила обучения Хэбба, Розенблатта и Видроу-Хоффа. Алгоритм обратного распространения ошибки.
дипломная работа [814,6 K], добавлен 29.09.2014Общие сведения о глобальных сетях с коммутацией пакетов, построение и возможности сетей, принцип коммутации пакетов с использованием техники виртуальных каналов. Характеристики и возможности коммутаторов сетей, протоколы канального и сетевого уровней.
курсовая работа [2,0 M], добавлен 26.08.2010Архитектура и топологии IP-сетей, принципы и этапы их построения. Основное оборудование корпоративных IP сетей магистрального и локального уровней. Маршрутизация и масштабируемость в объединенных сетях. Анализ моделей проектирования кампусных сетей.
дипломная работа [2,0 M], добавлен 10.03.2013Математическая модель нейронной сети. Однослойный и многослойный персептрон, рекуррентные сети. Обучение нейронных сетей с учителем и без него. Алгоритм обратного распространения ошибки. Подготовка данных, схема системы сети с динамическим объектом.
дипломная работа [2,6 M], добавлен 23.09.2013Исследование основ метода движения трафика в сети. Ознакомление с IP адресацией и IP пакетами, протоколами. Определение понятия и функций сокета. Создание программного приложения мониторинга трафика (поступления и отправки пакетов между абонентами).
курсовая работа [474,7 K], добавлен 20.04.2015