Введение:
Нейронные сети произвели революцию в области искусственного интеллекта, позволив нам решать сложные задачи с поразительной точностью. В основе нейронных сетей лежит концепция прямого распространения, которая позволяет нам прогнозировать выходные данные на основе входных данных. В этом сообщении блога мы отправимся в путешествие, чтобы понять тонкости прямого распространения, исследуя задействованные математические вычисления и их значение в архитектуре нейронных сетей. Кроме того, мы применим эти знания в практическом проекте по прогнозированию оттока клиентов, раскрывая роль весов, предубеждений и обучаемых параметров. Присоединяйтесь ко мне, когда мы углубимся в мир прямого распространения, раскрывая его потенциал для отраслевых приложений.
Суть прямого распространения:
Архитектура нейронной сети:
Нейронная сеть состоит из взаимосвязанных слоев: входного слоя, скрытых слоев и выходного слоя. Каждый уровень состоит из узлов, которые выполняют вычисления, облегчая поток информации через сеть.
Функции активации:
Функции активации привносят нелинейность, позволяя нейронным сетям фиксировать сложные отношения в данных. Популярные функции активации включают сигмовидную, 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)
Заключение:
В этом исчерпывающем сообщении в блоге мы углубились в глубины прямого распространения в нейронных сетях. Мы изучили математические основы этого процесса, наблюдая, как веса, смещения, функции активации и матричные вычисления переплетаются для прогнозирования результатов. Запустив увлекательный проект по прогнозированию оттока клиентов, мы стали свидетелями практических последствий прямого распространения и влияния обучаемых параметров на производительность сети. Вооружившись этими знаниями, мы можем раскрыть весь потенциал нейронных сетей для решения сложных отраслевых задач.