O mais importante é entender como funciona uma rede neural. Conhecimento “médio”, “básico” ou “avançado” é muito relativo, e já que você precisa de um guia pra fazer a sua em Java, tem esse exemplo aqui que cria uma rede neural em Python com 9 linhas de código.
Uma vez entendido, você pode transportar para Java.
Resumindo, basicamente você precisa configurar layers, onde cada layer terá seus neurônios com seus respectivos pesos iniciais. O processo de treinamento consiste em calcular o output de cada layer até chegar na última, aplicando funções de ativação. Com o resultado, iterar e repetir o processo de modo que da próxima vez o resultado estará mais próximo do desejado.
Se precisar também pode dar uma olhada nessa RNA que criei em Elixir. A linguagem é funcional, mas a lógica serve pra qualquer tipo de linguagem. A minha ainda considero básica e um work in progress, mas cobre o aspecto de forward/back propagation, ativação com sigmoid e operações básicas com matrizes.