0

I have 2 sequences of numbers and I'd want to continue it using neural algorithms (there is some logic in them, but I don't know what, and there are no external factors affecting the selection). There are some relationship is in each of the two sequences separately, as well as between them.

So, I'm new to machine learning, but I've got such an idea: is there any already written-and-well-working applications (libraries) that implement exact algorithms for me not to learn them all before using. Simply like "most-frequently-used-neural-algorithms-kit".

I'm thinking of analysing some music sheets and two sequences: "notes" and "durations".

Ben Usman
  • 7,969
  • 6
  • 46
  • 66
  • 1
    Can you elaborate on the nature of the patterns in the individual series, and the relationship between the two series? – Predictor Dec 21 '11 at 21:25
  • @Predictor, What's the difference? I mean, what should it be known for? To choose algorithm? What about my situation - I'm thinking of analysing some music sheets and two sequences: "notes" and "durations". – Ben Usman Dec 22 '11 at 08:31
  • It matters because different types of relationships are most easily detected by different types of solutions. – Predictor Dec 22 '11 at 09:09
  • Possible duplicate of http://stackoverflow.com/questions/3889077/neural-network-library-for-python and http://stackoverflow.com/questions/1549811/open-source-net-neural-network-library . – cyborg Dec 22 '11 at 11:11
  • "Possible duplicate of..." I don't see how. This one deals with solving a specific problem using (possibly) neural networks (another solution may work better: that has not been cleared up), while the two you mention are language-specific requests for neural network libraries. – Predictor Dec 22 '11 at 13:35
  • Okay. thank you for explanation. So, what would you reccomend to use to try to "predict the music"? – Ben Usman Dec 22 '11 at 18:39
  • what do you mean by "predict the music"? predicting the next note? – Timothy Dec 23 '11 at 08:31
  • @Skyler, yes. note and duration. – Ben Usman Dec 25 '11 at 09:15

3 Answers3

3

OK, according to the comments I think I got what you want.

Generally, no, you don't need to rewrite the standard algorithm of ANN. But be aware that ANN is not an algorithm, but a cluster of algorithms (including BackPropagation-ANN, Hopfield-ANN, Boltzmann Machine etc). Among them I recommend BP-ANN which is simple and suitable for your project. You might want to input a sequences of the known notes and duration, and then expect an output of the next note and duration.

To use BP-ANN, you don't need to rewrite them. Due to its a widely-used algorithm, there are many toolkits and open source implementations of it:

  1. Google "back propagation neural network implementation", you will find it easily. There are also a few opensource projects on Github(in both C language and Matlab): https://github.com/search?q=back+propagation&type=Everything&repo=&langOverride=&start_value=1
  2. For further reading if you also want to deeply understand the details of its implementation, read this: http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1279&context=ecetr&sei-redir=1
Timothy
  • 4,467
  • 5
  • 28
  • 51
  • How do you suggest he represent the input variables, using your recommendation of using a backpropagation-trained feedforward neural network? – Predictor Dec 26 '11 at 16:20
  • Yes that's what I suggested. Based on this, I also answered his question exactly that he doesn't need to rewrite ANN and I gave him the way to find it. – Timothy Dec 26 '11 at 18:24
  • Backprop-trained neural networks are numeric algorithms. Though they can accommodate both discrete inputs and outputs, dealing with discrete time series is much trickier. I believe your suggestion will be difficult if not impossible to implement. – Predictor Dec 26 '11 at 18:38
  • That seems to me that such kind of network'll try to find connections only between n and n+1 notes and duration, isn't it? Is it possible to analyse the whole sequence and try to find relations between not only 2 nearest elements, but more (3, 4, 5, 6, 7)? And find some "law" of the whole sequence? – Ben Usman Dec 27 '11 at 23:53
  • it doesn't only find the relations between only 2 nearest element, but the relations between its input and output. if the input and output are sequences, it will find the law between the two sequences. But please note that the "law" is the just the vector of each weight, usually without real-world meaning. – Timothy Dec 28 '11 at 07:34
  • Neural networks are not magic. At the least, your assertion should be qualified: "the neural network *may* find the relationship". Even in purely numerical problems, neural networks, as all approximators, are only successful part of the time. In this case, the relationships between sequences of notes are unlikely to be interpolated, which is largely what the neural network does. By the time you've pre-processed the data to the point that a neural network could solve this, you'd already have done what I suggested in my answer. – Predictor Dec 28 '11 at 11:20
1

If you're interested in neural networks there are plenty of libraries available. ANNIE is one such open source example, the MATLAB Neural Network toolbox is a commercial example. These are libraries which you tell the architecture of the neural network, you can train, test, verify, etc. The important part in all these machine learning methods is how you represent your data, and those were the comments you were getting (for example Predictor's). Sometimes you get excellent results with one representation and very bad results with others.

There are also libraries to train SVMs (a specialized algorithm to train neural networks) with quadratic regularization, LIBSVM is one great example.

There is also plenty of work on predicting time series with neural networks (if that is what you want to do with music, I am not sure what exactly you want).

carlosdc
  • 12,022
  • 4
  • 45
  • 62
-1

If the input is a series of (note, duration) pairs, then I suspect you'd get much farther by summarizing the historical note-to-note transitions or by something similar in an effort to capture the syntax of the music (Markov analysis, etc.), than you would by stuffing this into a neural network. It may help, too, to try representing the series as note differentials, measuring how many notes up or down the scale the new note is, rather than the actual value of the note itself.

Predictor
  • 984
  • 6
  • 9
  • 1
    Where is the answer to what the OP asked? He is asking that is it necessary to re-implement ANN for his project. – Timothy Dec 26 '11 at 11:24
  • I suggest that he likely does not need a neural network at all. – Predictor Dec 26 '11 at 12:57
  • I understand. But ANN is also a way for his project. please note that this is a QA system instead of a BBS. please answer the question exactly what OP wants. He wants to know how to do his project with ANN (with his own reason), not the better algorithm than ANN. If he asks the latter one, we should answer like what you said:-) – Timothy Dec 26 '11 at 15:02
  • So, when the OP asks how to drive a screw with a hammer, you believe that it is correct to suggest a particular type of hammer, rather than direct the OP in another direction? I fail to see how that is helpful. – Predictor Dec 26 '11 at 18:39
  • 1
    I do not agree with opponents - thank you for suggesting me alternatives. I'll have a look at Markov's chains. The problem I see know is to analyse sequence not as pairs (n, n+1), (n+1, n+2) but "in whole" like (n, n+1, n+2, ...) and try to find relations in pieces consists of more than 2 elements. – Ben Usman Dec 27 '11 at 23:59