Hi Steve,

Just a quick reply, after reading your thoughtful comments.  Your 
thinking about what to try next is very similar to mine -- in 
particular, making use of the second-best symbol value as a substitute 
for simple erasures.

I should have mentioned that I in my tests with ntrials=10^5 and 10^6 I 
(aomewhat arbitrarily) changed the test on ncandidates from an upper 
limit of 5000 to an upper limit of ntrials/2.

I will continue to play, as time permits, and will report any 
interesting results.

        -- Joe

On 9/25/2015 9:34 AM, Steven Franke wrote:
> Hi Joe -
> Thanks for the new results! Getting ready for class here - so just a quick 
> note. Your results, though more extensive than mine, point in the same 
> direction. As it stands, sfrsd seems to be around 0.5 dB shy of kvasd. I have 
> a long list of ideas to try to do better - but it will take time to sort 
> through them.
>
> To answer your question on optimizing metrics - the short answer is that they 
> haven’t been optimized at all. Feel free to play with them. Intuitively, I 
> like the one that I was using - but last night I played with yours and see 
> that it’s not bad either. One task that I have on my list is to collect 
> statistics on the probability of the second-best-symbol estimate being the 
> correct symbol, as a function of the two probability metrics. I expect there 
> to be a sweet spot where p2/p1 is near 0.5 and p1 is not too small and not 
> too large where mr2sym is going to be useful. Collecting these statistics 
> would help us decide which symbol metrics (yours or mine) are “better” for 
> this purpose. This would also point the way toward a true Chase-type 
> algorithm where we actually use the second-most-reliable symbols. At the 
> moment, the only metric that is used is the probability associated with mrsym 
> - and that is used in a crude way, as you pointed out. The idea would be to 
> have so
me finite probability of replacing a symbol with mr2sym instead of marking it 
as an erasure - but only for symbols where mr2sym is reasonably likely to be 
the correct symbol. If/when we replace a symbol with mr2sym instead of marking 
it as an erasure, we’ll need to tell BM to re-calculate the syndromes - which 
is done using the last argument that I added to KA9Q’s routine.
>
> Last night, I found a potentially powerful metric to use as a stopping 
> criterion. Note that the algorithm runs all ntrials before stopping at 
> present. Hence, it is dog-slow, as you found out. I found that a good 
> stopping criterion can be created by calculating nhard-n2ndbest where nhard 
> is the number of symbols where the received symbol vector differs from the 
> decoded codeword (the number of “hard” errors) and n2ndbest is the number of 
> places where the second most reliable symbol is the *same* as the symbol in 
> the decoded codeword. I found that a bad codeword rarely has n2ndbest larger 
> than 2. I also found that a threshold like nhard-n2ndbest<45 (I’m not sure if 
> 45 is the best - but you get the idea) works well.
>
> With this in mind - the average running time can be dramatically reduced if 
> we simply stop (break out of the ntrials loop) when we find a codeword that 
> meets this type of criterion.
>
> BTW, as currently configured, the ntrial loop breaks out after it finds 5000 
> codewords. This limits the effectiveness of increasing ntrials to large 
> number (like 100000). To get the full benefit of large ntrials, you would 
> probably need to increase that threshold to 20k or more - or just eliminate 
> the threshold and implement something like the stopping criterion that I 
> mentioned above.
>
> It is instructive to watch the results in sfrsd.log scroll by - you can see 
> how sensitive the number of “found” codewords is to the selected erasure 
> probabilities and the metrics…
>
> If you have time to play, feel free to mess around with sfrsd - or create an 
> jtrsd and we can merge them later.
> Steve k9an
>
>> On Sep 25, 2015, at 8:11 AM, Joe Taylor<j...@princeton.edu>  wrote:
>>
>> Hi Steve and all,
>>
>> I've added more lines to the table summarizing my tests of decoding
>> weak, isolated  JT65A signals.  As before, the final number on each line
>> is the number of valid decodes from a thousand files at
>> S/N=-24 dB.
>>
>> 1. WSJT-X (BM only)                       2
>> 2. WSJT (BM only)                         5
>> 3. WSJT-X + kvasd                       189
>> 4. WSJT-X + kvasd (thresh0=1, ntest>0)  207
>> 5. WSJT-X + sfrsd (Linux)               302
>> 6. WSJT-X + sfrsd (Win32)               309
>> 7. WSJT-X + sfrsd (Linux, thresh0=1)    348
>> 8. WSJT-X + sfrsd (Win32, thresh0=1)    350
>> 9. WSJT + kvasd (Linux)                 809
>> 10.WSJT + kvasd (Win32)                 809
>>
>> 11.WSJT + sfrsd (10000)                 464
>> 12.WSJT + sfrsd (SFM no ntest 10000)    519
>> 13.WSJT + sfrsd (SFM no ntest 20000)    543
>> 14.WSJT + sfrsd (SFM no ntest 1000)     342
>> 15.WSJT + sfrsd (SFM no ntest 100000)   706
>> 16.WSJT + sfrsd (SFM no ntest 1000000)  786  (took 11 hours!)
>>
>> 17.WSJT + kvasd (SFM no ntest)          897
>>
>> Test 11 simply replaced kvasd with sfrsd, with no other changes.  Tests
>> 12-16 used Steve's metrics for the symbol probabilities in demod64a.f90
>> and commented out the following lines in extract.F90:
>>
>> !  if(ntest.lt.50 .or. nlow.gt.20) then
>> !     ncount=-999                         !Flag bad data
>> !     go to 900
>> !  endif
>>
>> The number of random erasure vectors is specified for each of these
>> runs.  Test 17 is a final run using kvasd.
>>
>> With "reasonable" numbers of random erasure trials, sfrsd seems to be
>> something like 0.5 dB shy of the sensitivity of kvasd.  Steve, I know
>> you have already done some parameter-tuning for sfrsd, but possibly
>> there's still room for improvement?  How did you choose the values 0.5
>> 0.6 0.6 0.6 0.8 and the step locations 32 128 196 256, lines 197-207 in
>> sfrsd.c ?  Have you thought about other possible ways to speed up the
>> search by eliminating some candidate erasure vectors?
>>
>>      -- Joe, K1JT
>>
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> wsjt-devel mailing list
>> wsjt-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wsjt-devel
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> wsjt-devel mailing list
> wsjt-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wsjt-devel

------------------------------------------------------------------------------
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to