Введение:

Нейронные сети произвели революцию в области искусственного интеллекта, позволив нам решать сложные задачи с поразительной точностью. В основе нейронных сетей лежит концепция прямого распространения, которая позволяет нам прогнозировать выходные данные на основе входных данных. В этом сообщении блога мы отправимся в путешествие, чтобы понять тонкости прямого распространения, исследуя задействованные математические вычисления и их значение в архитектуре нейронных сетей. Кроме того, мы применим эти знания в практическом проекте по прогнозированию оттока клиентов, раскрывая роль весов, предубеждений и обучаемых параметров. Присоединяйтесь ко мне, когда мы углубимся в мир прямого распространения, раскрывая его потенциал для отраслевых приложений.

Суть прямого распространения:

Архитектура нейронной сети:

Нейронная сеть состоит из взаимосвязанных слоев: входного слоя, скрытых слоев и выходного слоя. Каждый уровень состоит из узлов, которые выполняют вычисления, облегчая поток информации через сеть.

Функции активации:

Функции активации привносят нелинейность, позволяя нейронным сетям фиксировать сложные отношения в данных. Популярные функции активации включают сигмовидную, ReLU и tanh.

Веса и смещения:

Веса и смещения являются регулируемыми параметрами нейронной сети. Веса определяют силу связей между узлами, а смещения вносят смещения во входные значения. Благодаря обучению эти параметры оптимизируются для улучшения прогнозирующих возможностей сети.

Математические расчеты при прямом распространении:

Входной слой в скрытый слой:

Инициализация случайного веса: мы инициализируем матрицу весов на основе количества входных и скрытых узлов.

Умножение матриц: Входная матрица, представляющая входные данные, умножается на матрицу весов.

Добавление смещения: член смещения добавляется к результату матричного умножения.

Функция активации: вывод для каждого узла в скрытом слое получается путем применения функции активации.

Скрытый слой к выходному слою:

Шаги из предыдущего раздела повторяются с использованием весов, соединяющих скрытый и выходной слои.

Выход Расчет:

Выход нейронной сети определяется путем применения функции активации к узлам в выходном слое.

Практический проект: Прогноз оттока клиентов:

Чтобы укрепить наше понимание прямого распространения, мы приступим к увлекательному проекту: прогнозированию оттока клиентов. Используя набор данных, содержащий соответствующую информацию о клиентах, мы построим нейронную сеть. Путем инициализации веса и смещения с последующим прямым распространением мы будем прогнозировать отток клиентов на основе рассчитанных результатов. Это практическое приложение прольет свет на влияние обучаемых параметров на точность прогнозирования, предлагая реальный взгляд на силу прямого распространения.

import pandas as pd
import numpy as np

# Loading the dataset
df = pd.read_csv('/content/Churn_Modelling.csv')

# Displaying the first few rows of the dataset
df.head()

# Checking the shape of the dataset
df.shape

# Descriptive statistics of the dataset
df.describe()

# Information about the dataset, including data types and missing values
df.info()

# Checking for missing values
df.isnull().sum()

# Checking for duplicate rows
df.duplicated().sum()

# Dropping unnecessary columns
df.drop(columns=['RowNumber', 'CustomerId', 'Surname'], inplace=True)

# Performing one-hot encoding for categorical variables
df = pd.get_dummies(df, columns=['Geography', 'Gender'], drop_first=True)

# Separating the target variable (Exited) from the input features
y = df[['Exited']]
X = df.drop(columns=['Exited'])

# Splitting the data into training and testing sets
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

# Feature scaling using StandardScaler
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.fit_transform(X_test)

# Installing TensorFlow
!pip install tensorflow

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

# Creating the neural network model
model = Sequential()
model.add(Dense(3, activation='sigmoid', input_dim=11))
model.add(Dense(1, activation='sigmoid'))

# Displaying the summary of the model
model.summary()

# Compiling the model
model.compile(loss='binary_crossentropy', optimizer='Adam')

# Training the model
model.fit(X_train_scaled, y_train, epochs=10)

# Getting the weights of the first hidden layer
model.layers[0].get_weights()

# Getting the weights of the output layer
model.layers[1].get_weights()

# Making predictions on the testing set
pred = model.predict(X_test_scaled)

# Evaluating the model using accuracy score
from sklearn.metrics import accuracy_score
accuracy_score(y_test.values, pred)

Заключение:

В этом исчерпывающем сообщении в блоге мы углубились в глубины прямого распространения в нейронных сетях. Мы изучили математические основы этого процесса, наблюдая, как веса, смещения, функции активации и матричные вычисления переплетаются для прогнозирования результатов. Запустив увлекательный проект по прогнозированию оттока клиентов, мы стали свидетелями практических последствий прямого распространения и влияния обучаемых параметров на производительность сети. Вооружившись этими знаниями, мы можем раскрыть весь потенциал нейронных сетей для решения сложных отраслевых задач.