Neural networks might be tricky. Logos tend to be precise, neural networks work better when the result is fuzzier.
On the other hand, identifying a good logo is the sort of fuzzy problem that you might be able to train a network for. Use it as a fitness function over some other algorithm.
You could have a generator that combined a variety of operations into a 'logo expression' that generates an image.
Have values and operations in the expression to represent:
a variety of geometric shapes.
composite operations (union, intersection, subtraction etc.)
symmetry operations (reflective, rotational)
Glyph images (possibly with some sort of semantic metadata to enable relationships between multiple glyphs)
Transformations (translatiosn, rotations etc. Possibly just a matrix)
Filters (smooth corners, grow shape, generate outline)
Which if I got it right should be a set of 5 squares with rounded corners and a line thickness of 3 arranges in a circle and a small circle cut out of the bottom right corner of the squares.
It occupies a somewhat similar space, (I believe it does not provide composition operations). Having the ability to define shapes as a probabilistic combination of other shapes gives you a massive variety of possibilities.
something like this would allow for a good variety of base imagery which could then have the layer I posted in the previous comment come after.
Check out the context free art gallery for some amazing (not very logo like) images
Genetic programming using a design grammar (i.e. a hierarchical rule system, like a language grammar) is probably a much more natural fit than neural networks for generating the logos. It's been done before with other domains, including architecture. Using a neural network to learn the evaluation function (i.e. put a number on how 'good' a candidate logo is) in a GP is very possible though.
On the other hand, identifying a good logo is the sort of fuzzy problem that you might be able to train a network for. Use it as a fitness function over some other algorithm.
You could have a generator that combined a variety of operations into a 'logo expression' that generates an image.
Have values and operations in the expression to represent:
So you get something likesquare(1.5).rotate(45).smooth(30).outline(3).translate(-0.5,0.0).rotationalSymmetry(5).subtract( circle(0.25).translate(0.5,0.5) )
Which if I got it right should be a set of 5 squares with rounded corners and a line thickness of 3 arranges in a circle and a small circle cut out of the bottom right corner of the squares.